我正在使用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
。 答案 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轴方面总是静止不动,与可以在屏幕上运行相比可以简化事情..