我正在用XNA Game Studio 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;
解决此问题的一种方法是根据@jonhopkins注释检查玩家的位置
shotPosition.X
。如果玩家能够以与射击相同的速度移动,他们可以跟随它,然后射击将永远不会消失,这可能是您想要的,也可能不是。您的另一个选择是存储射击位置,然后进行比较:
if (isShotted == true && (shotPosition.initialX+150 >= shotPosition.currentX) )
但是,请确保您根据玩家和对象如何围绕坐标系移动来考虑这一点。如果您的播放器相对于x轴始终静止不动,那么与它们可以绕屏幕运行相比,可以简化事情。
关于c# - 使用XNA Game Studio在2D游戏中按键拍摄,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13956112/