使用XNA游戏工作室在2D游戏中按键拍摄



我正在使用XNA游戏工作室4.0开发一款2D游戏,我需要让我的"英雄"精灵拍摄一个射击精灵,这是一个矩形。

当我按左键进行射击时,射击是从我的播放器开始的。到目前为止,还可以,但问题是它永远不会停止 - 它的位置永远不会theVoid.

这是我的拍摄代码:

protected override void Update(GameTime gameTime)
{
    if (Keyboard.GetState().IsKeyDown(Keys.LeftControl) && isShotted == false)
    {
        isShotted = true;
        shotPosition = playerPosition;            
    }
    if (isShotted == true && (shotPosition.X <= shotPosition.X+150) )
    {
        shotPosition.X += shotSpeed.X * (float)gameTime.ElapsedGameTime.TotalSeconds;
    }
    else 
    { 
        isShotted = false;
        shotPosition = theVoid;
    }
}

一些澄清:

  • playerPosition是我的"英雄"精灵位置。
  • theVoid Vector2 (700,700),当我设置shotPosition = theVoid镜头消失时。
镜头

永远不会消失,因为每次更新都会shotPosition.x更新。您正在检查:

if (isShotted == true && (shotPosition.X <= shotPosition.X+150) )

然后在该if中增加shotPosition.X

shotPosition.X += shotSpeed.X * (float)gameTime.ElapsedGameTime.TotalSeconds;

解决此问题的一种选择是对照玩家位置检查shotPosition.X - 每条@jonhopkins评论。 如果玩家可以以接近与射击相同的速度移动,他们可以跟随它,然后射击永远不会消失,这可能是也可能不是你想要的。

您的另一种选择是存储射击的位置,并比较以下内容:

if (isShotted == true && (shotPosition.initialX+150 >= shotPosition.currentX) )

不过,请确保您从玩家和对象在坐标系中移动的方式来考虑这一点。如果您的播放器在x轴上始终是静止的,那么与他们可以在屏幕上运行相比,这可以简化事情。

最新更新