如何计算物体移动的方向

时间:2013-12-04 16:56:35

标签: c# xna direction

所以我目前有一个在Y轴上移动的物体(上下)。我怎么能编程它以便程序知道对象是上升还是下移?

我知道我需要一个if语句,如下所示:

if (object is moving up)
{
//set direction to 1
}

else
{
//object must be going down, set direction to 2
}

我只是不明白我需要使用什么语法。如果我按住键并且它向上或向下移动,这将很容易,但事实并非如此。物体是一个弹跳球,因此当你设定一个力量时,球会跳跃,然后反弹,所以它会不断变化。

感谢您的帮助,请告诉我这是否描述得不好,您需要更多信息。

2 个答案:

答案 0 :(得分:1)

您需要保存当前坐标,以便在调用update方法后检查它们。然后,您可以检查先前和当前位置之间的差异:

Game1()构造函数中声明它:

Point previous = new Point();
previous.X = myObject.InitialX;
previous.Y = myObject.InitialY;

Update

int deltaX = object.X - previous.X;
int deltaY = object.Y - previous.Y;

if (deltaX < 0)
{
    object is moving upwards
} 
else
{
    object is moving downwards
}

if (deltaY < 0)
{
    object is moving to the left
} 
else
{
    object is moving to the right
}

//update the previous state
previous.X = myObject.X;
previous.Y = myObject.Y;

答案 1 :(得分:0)

当您更新球的位置时,您有一个位置并计算下一帧的位置 - &gt;您可以计算距离矢量。

使用此距离向量的y值符号,您可以决定它是向上,向下还是不移动(= 0)。