我目前正在windows窗体中编写一个小游戏,在其中我想添加一个敌人,它在玩家的直接路径上移动。我知道玩家的位置和敌人的位置。我想要得到敌人的下一个位置,离老的位置只有3-5个像素。我该如何计算呢?
发布于 2018-05-19 19:30:28
所以你有两个Location
。第一个是源,第二个是目标。
您必须假设迭代计数。也就是说,对象必须以X步到达目标。
所以首先要计算DeiffX和DiffY。
double DiffX = (Target.X - Source.X);
double DiffY = (Target.Y - Source.Y);
在下一步,我们可以说:
int Step = (int)Math.Max(DiffY,DiffX);
对于每次迭代,我们必须向当前位置添加一些值,因此:
double DeltaX = DiffX/Step;
double DeltaY = DiffY/Step;
在最后一步:
for (int i = 0; i<Step; i++)
{
Object.Location = new Point(Object.Location.X+ (int)DeltaX , Object.Location.Y + (int)DeltaY);
}
校准结果的步骤:
Object.Location = Target.Location;
(这是因为我们的计算有一些小数损失)
https://stackoverflow.com/questions/50423983
复制相似问题