0
海蘭大家,所以首先關閉所有,這裏是我的精靈的形象: XNA精靈運動出了錯
我縮小下來我的遊戲,所以它不是在遊戲中的大。
所以無論如何我想要的代碼如下的結果:
protected override void Update(GameTime gameTime)
{
// Allows the game to exit
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
this.Exit();
spritePos = spriteVelocity + spritePos;
spriteR = new Rectangle((int)spritePos.X, (int)spritePos.Y, spriteT.Width, spriteT.Height);
spriteOrigin = new Vector2(spriteR.Width/2, spriteR.Height/2);
if (Keyboard.GetState().IsKeyDown(Keys.Right)) rotation += 0.1f;
if (Keyboard.GetState().IsKeyDown(Keys.Left)) rotation -= 0.1f;
if (Keyboard.GetState().IsKeyDown(Keys.Up))
{
spriteVelocity.X = (float)Math.Cos(rotation) * tangentialVelocity;
spriteVelocity.Y = (float)Math.Sin(rotation) * tangentialVelocity;
} else if (spriteVelocity != Vector2.Zero)
{
float i = spriteVelocity.X;
float j = spriteVelocity.Y;
spriteVelocity.X = i -= friction * i;
spriteVelocity.Y = j -= friction * j;
}
base.Update(gameTime);
}
,然後繪製方法:
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);
spriteBatch.Begin();
foreach(Bushes bush in bushes)
{
bush.Draw(spriteBatch);
}
player.Draw(spriteBatch);
spriteBatch.Draw(spriteT, spritePos, null, Color.White, rotation, spriteOrigin, 0.1f, SpriteEffects.None, 0f);
spriteBatch.End();
base.Draw(gameTime);
}
的是,當我按「向上」箭頭這一點火箭應該進入方向它正在指向(因爲我可以用左右箭頭來旋轉它,使其指向需要的位置),但是這個代碼的結果是,當我按下向上箭頭時,精靈首先向右移動,當它旋轉它時沒有去哪裏它尖銳但有點橫向:/
我在這裏做錯了什麼?
PS。所有那些沒有在代碼中聲明和初始化的變量是全局變量,並在Initialize()和LoadContent()方法中初始化:/
非常感謝:D –