我有一个坦克车身的 2D 图像(自上而下),可以在屏幕上左右移动。在顶部,还有第二张坦克炮塔的图像。随着用户鼠标沿 Y 轴移动,该炮塔可以在屏幕边缘旋转。
当用户按下“Enter”时,会出现一个项目符号,并以炮塔的角度在屏幕上移动。然而,虽然角度很好,但子弹的位置似乎变化很大。有时,它会位于它应该位于的位置(在大炮的中心),但是,当您移动鼠标时,它似乎会被抵消。
编辑:出于某种奇怪的原因,我的照片似乎没有出现 - 所以这里有一个直接链接:http: //img824.imageshack.us/img824/7093/khte.png
编辑代码:
Tank Fire
if (keyBoardState.IsKeyDown(Keys.Enter))
{
shell.Initialize(rotation, new Vector2(location.X + 25, location.Y - 15));
shell.makeAlive();
}
(它是用坦克的位置(+25,-25)初始化的,所以它出现在炮塔的末端。把这个设置在坦克的位置(shell.Initialize(rotation,location);)似乎没有什么区别到偏移量。)
子弹/外壳:
public void Update(GameTime gameTime)
{
if (alive)
{
movement.X -= speed * (float)Math.Cos(rotation);
movement.Y -= speed * (float)Math.Sin(rotation);
location.X += (int)movement.X;
location.Y += (int)movement.Y;
}
}
public void Draw(SpriteBatch spriteBatch)
{
if (alive)
{
spriteBatch.Begin(SpriteBlendMode.AlphaBlend);
spriteBatch.Draw(texture, location, null, Color.White, rotation - MathHelper.PiOver2, new Vector2(texture.Width / 2, texture.Height / 2), 1.0f, SpriteEffects.None, 0f);
spriteBatch.End();
}
}