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

时间:2012-12-19 15:52:30

标签: c# xna xna-4.0

我正在使用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

1 个答案:

答案 0 :(得分:4)

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

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

然后在if内增加shotPosition.X

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

解决此问题的一个方法是根据@jonhopkins评论检查shotPosition.X与玩家的位置。如果玩家能够以与镜头相同的速度移动,他们可以跟随它,然后镜头永远不会消失,这可能是也可能不是你想要的。

你的另一个选择是存储射击射击位置,并比较:

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

请确保您根据球员和物体在坐标系中的移动方式来考虑这一点。如果你的播放器在x轴方面总是静止不动,与可以在屏幕上运行相比可以简化事情..