Движение объекта по его направлению
Код
Public Class Players
Public BLeft As Keys = Keys.A
Public BRight As Keys = Keys.D
Public BMoveUp As Keys = Keys.W
Public BMoveBack As Keys = Keys.S
Public BShot As Keys = Keys.F
Public PlayerDirection As Vector2
Public PlayerPosition As Vector2 = New Vector2(100, 100)
Public PlayerRect As Rectangle
Public PlayerRotate As Single = 0.0F
Public MoveSpeed As Integer = 5
Public PlayerTexture As Texture2D
Public Sub LoadContent()
PlayerTexture = Globals.Content.Load(Of Texture2D)("Player\p1")
End Sub
Public Sub Update(ByVal gameTime As GameTime)
PlayerRect = New Rectangle(0, 0, 112, 75)
If Keyboard.GetState(PlayerInd).IsKeyDown(BLeft) = True Or GamePad.GetState(PlayerInd).IsButtonDown(JLeft) = True Then
If PlayerRotate < -6.2F Then
PlayerRotate = 0.0F
Else
PlayerRotate -= 0.1F
End If
End If
If Keyboard.GetState(PlayerInd).IsKeyDown(BRight) = True Or GamePad.GetState(PlayerInd).IsButtonDown(JRight) = True Then
If PlayerRotate > 6.2F Then
PlayerRotate = 0.0F
Else
PlayerRotate += 0.1F
End If
End If
If Keyboard.GetState(PlayerInd).IsKeyDown(BMoveUp) = True Then
PlayerDirection.X = CSng(Math.Sin(PlayerRotate))
PlayerDirection.Y = -CSng(Math.Cos(PlayerRotate))
PlayerPosition.X += PlayerDirection.X * MoveSpeed
PlayerPosition.Y += PlayerDirection.Y * MoveSpeed
End If
End Sub
Public Sub Draw(ByVal gameTime As GameTime)
Globals.spriteBatch.Draw(PlayerTexture, PlayerPosition, PlayerRect, PlayerColor, PlayerRotate, New Vector2(56, 37), New Vector2(0.5F), SpriteEffects.None, 0)
End Sub
End Class