很多遊戲都會用到直線運動,像是人物在地圖走動或是打磚塊的小球運動,在這裡我們要運用國中學的物裡,等速運動公式: S = Vt 來實作程式碼。
很多遊戲都會用到直線運動,像是人物在地圖走動或是打磚塊的小球運動,在這裡我們要運用國中學的物裡等速運動公式: S = Vt 來實作程式碼。
Game1類別宣告變數
Public Class Game1
Inherits Microsoft.Xna.Framework.Game
Private WithEvents graphics As GraphicsDeviceManager
Private WithEvents spriteBatch As SpriteBatch
Dim ball As Texture2D '球
Dim position As Vector2 = New Vector2(0, 240) '位置
Dim velocity As Vector2 = New Vector2(5, 0) '速度
End Class
LoadContent()載入小球圖片資源
Protected Overrides Sub LoadContent()
' Create a new SpriteBatch, which can be used to draw textures.
spriteBatch = New SpriteBatch(GraphicsDevice)
' TODO: use Me.Content to load your game content here
ball = Content.Load(Of Texture2D)("ball")
End Sub
速度 velocity = (5, 0),表示小球會以 5 pixel/frame的速率水平移動。
如果將速度改為 velocity = (5, 5),則小球會往右下的方向移動。
我們在Update()裡實作物裡公式: S = Vt, position (單位: pixel) = velocity (單位: pixel/frame) * time (這裡的time = 1 frame)。
Protected Overrides Sub Update(ByVal gameTime As GameTime)
' Allows the game to exit
If GamePad.GetState(PlayerIndex.One).Buttons.Back = ButtonState.Pressed Then
Me.Exit()
End If
' TODO: Add your update logic here
position += velocity
MyBase.Update(gameTime)
End Sub
在Draw()繪製小球
Protected Overrides Sub Draw(ByVal gameTime As GameTime)
GraphicsDevice.Clear(Color.CornflowerBlue)
' TODO: Add your drawing code here
spriteBatch.Begin()
spriteBatch.Draw(ball, position, Color.White)
spriteBatch.End()
MyBase.Draw(gameTime)
End Sub
程式執行結果如下 (範例下載)
這裡只是示範最簡單的直線,還有更複雜的不規則運動,而且都跟數學有關,所以想寫好遊戲程式,要先把數學學好喔!