2D обнаружение столкновений в Visual Basic - PullRequest
0 голосов
/ 20 апреля 2020

Я впервые пишу небольшую игру winform. При изучении обнаружения столкновений я знаю, что сначала мне нужно установить свои границы.

    Me.Controls.Add(PlayerShip) 'imports the picture box onto the PlayScreen
    PlayerShip.Width = 40
    PlayerShip.Height = 40 'Dimensions of the player ship
    PlayerShip.BorderStyle = BorderStyle.FixedSingle 'adds a border to the picturebox
    PlayerShip.BackColor = Color.White 'adds colour to the ship background
    PlayerShip.SetBounds(x:=40, y:=40, height:=40, width:=40)

А затем другое графическое окно

    Me.Controls.Add(WallNorth)
    WallNorth.Width = 750
    WallNorth.Height = 5
    WallNorth.BorderStyle = BorderStyle.FixedSingle
    WallNorth.BackColor = Color.Green
    WallNorth.Top = 1
    WallNorth.Left = 1
    WallNorth.SetBounds(x:=1, y:=1, height:=5, width:=750)


    Private Sub PlayScreen_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
    Select Case e.KeyValue
        Case Keys.Right
            MoveRight = True
        Case Keys.Left
            MoveLeft = True  'This edits the boolean value of the varibales when the correct key is pressed
        Case Keys.Up
            MoveUp = True
        Case Keys.Down
            MoveDown = True
    End Select

End Sub

Private Sub PlayScreen_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyUp
    Select Case e.KeyValue
        Case Keys.Right
            MoveRight = False
        Case Keys.Left
            MoveLeft = False 'This edits the boolean value when the key has been lifted
        Case Keys.Up
            MoveUp = False
        Case Keys.Down
            MoveDown = False
    End Select
End Sub

Private Sub MovementTimer_Tick(sender As Object, e As EventArgs) Handles MovementTimer.Tick
    If MoveRight = True Then
        PlayerShip.Left += 5
    End If
    If MoveLeft = True Then
        PlayerShip.Left -= 5
    End If
    If MoveUp = True Then
        PlayerShip.Top -= 5 ' I use a timer to tick every 10 milliseconds ato check the states of each key, this statement controlls the execution of the direction
    End If
    If MoveDown = True Then
        PlayerShip.Top += 5
    End If

End Sub

Конечный класс

Однако, когда я пытаюсь написать оператор if, чтобы проверить, будут ли они сталкиваться или нет, я не получаю опцию «.bounds». Я видел, что «.bounds» необходимо после названия графического окна. Вместо этого меня встретили «.setbounds», хотя я и устанавливал их раньше.

Что-то не так с моей версией Visual Studio, или я что-то упустил?

...