XNA 直線運動

  • 3004
  • 0

很多遊戲都會用到直線運動,像是人物在地圖走動或是打磚塊的小球運動,在這裡我們要運用國中學的物裡,等速運動公式: S = Vt 來實作程式碼。

很多遊戲都會用到直線運動,像是人物在地圖走動或是打磚塊的小球運動,在這裡我們要運用國中學的物裡等速運動公式: S = Vt 來實作程式碼。

 

先將小球圖片加入專案裡 ball

image

 

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的速率水平移動。

image

 

如果將速度改為 velocity = (5, 5),則小球會往右下的方向移動。

image

 

我們在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

 

程式執行結果如下 (範例下載)

這裡只是示範最簡單的直線,還有更複雜的不規則運動,而且都跟數學有關,所以想寫好遊戲程式,要先把數學學好喔!

screenshot_10-25-2011_22.27.48.89