我有一个坦克车身(自上而下)的2D图像,可以在屏幕上左右移动。在顶部,还有坦克炮塔的第二个图像。用户沿着Y轴移动鼠标后,该刀塔可以在屏幕边缘上旋转。XNA 3.5射击坦克炮
当用户按下'输入'时,出现一个子弹并以炮塔的角度在屏幕上移动。然而,虽然角度很好,但子弹的位置似乎差异很大。有时,它的位置应该在大炮的中心,但是,当你移动鼠标时,它似乎被抵消了。
编辑:出于某种奇怪的原因,我的图片似乎并没有被显示出来 - 所以这里是一个直接链接: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)进行初始化,使其出现在turrent的末尾。在坦克位置(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();
}
}
你是什么意思,你不能让子弹定位在炮塔的位置?在你解雇他们之后,还是在你解雇他们之前,鼠标是否会让他们移动? –
嗨,请看我的更新。我已经截取了子弹的位置(用黑色标记)和我想要的位置(用黄色标记) 谢谢 – user1662290
您是否想过只在子弹顶部产生子弹然后在您的子弹中取代子弹更新循环,如果它还没有解雇? –