所以我目前有一个在Y轴上移动的物体(上下)。我怎么能编程它以便程序知道对象是上升还是下移?
我知道我需要一个if语句,如下所示:
if (object is moving up)
{
//set direction to 1
}
else
{
//object must be going down, set direction to 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)。