Я пытаюсь создать простую платформерскую игру в Visual Basi c как проект для школы. Хотя я понял, как перемещать изображение вверх, вниз, влево и вправо с помощью клавиш WASD, я не могу заставить PictureBox двигаться по диагонали, удерживая две клавиши. Например, PictureBox должен перемещаться по диагонали в верхнем правом углу, когда пользователь нажимает клавиши W и D. Короче говоря, как я могу перемещать PictureBox по диагонали, когда пользователь держит две клавиши?
Ниже приведен код.
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
If DPressed = True Then
PictureBox1.Left = PictureBox1.Left + 9
ElseIf DPressed = True AndAlso WPressed = True Then
PictureBox1.Left = PictureBox1.Left + 9
PictureBox1.Top = PictureBox1.Top - 9
ElseIf APressed = True Then
PictureBox1.Left = PictureBox1.Left - 9
ElseIf SPressed = True Then
PictureBox1.Top = PictureBox1.Top + 9
ElseIf WPressed = True Then
PictureBox1.Top = PictureBox1.Top - 9
End If
End Sub
Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles MyBase.KeyDown
If e.KeyCode = Keys.D Then
DPressed = True
ElseIf e.KeyCode = Keys.W Then
WPressed = True
ElseIf e.KeyCode = Keys.A Then
APressed = True
ElseIf e.KeyCode = Keys.S Then
SPressed = True
ElseIf (e.KeyCode And Not Keys.Modifiers) = Keys.D AndAlso e.Modifiers = Keys.W Then
DPressed = True
WPressed = True
End If
End Sub
Private Sub Form1_KeyUp(sender As Object, e As KeyEventArgs) Handles MyBase.KeyUp
If e.KeyCode = Keys.D Then
DPressed = False
WPressed = False
ElseIf e.KeyCode = Keys.W Then
WPressed = False
ElseIf e.KeyCode = Keys.A Then
APressed = False
ElseIf e.KeyCode = Keys.S Then
SPressed = False
End If
End Sub