我在游戏中将其缩小,所以它在游戏中并不是那么大。
所以无论如何我想要的代码结果如下:
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()方法中初始化:/
答案 0 :(得分:0)
如果你的旋转初始化为0,它应该指向右边,看看下面三角形圆圈上0点的位置:)
您可以使用Vector2.Transform计算您的方向,并将值参数(第一个) Vector2(0,1)设为您的参考方向。
或者您将精灵向右旋转并在Pi / 2处初始化角度。