C#径处理算法用于从移动点(X,Y)一个目的是点(X,Y)(C# Pathing algorithm

2019-11-05 09:35发布

鉴于这可能移动到下一个对象,向后,向左和向右在给定的X,Y点。 如何有效的对象以最有效和人类自然的方式使用给定的运动力学引导到X,Y点。

目的是提供用于实时运动,你可以告诉他们“startMoving |方向|()”和“stopMoving |方向|()”。 虽然作为一个附加的扭曲和我有麻烦的一部分,是对象的饰面从未已知的,只有其当前位置是已知的,所以该算法必须“检测”方向。 对象的位置是在单独的线程中500-1second间隔更新。 “请求”更新算法中的位置做出在任何时候进行,但它不是立即可用并且算法必须保持在考虑。 做类似requestAndWaitForCoordUpdate()是完全可以接受的,但是可能没有必要的。

此外,没有任何障碍的出现,我们可以假设你是一个通常开放的平面,流浪到远路之间的直接直线,你可能会遇到障碍。 它是安全的假设,1/4的目标和源之间的距离,应在宽度可用给定的直接路径上。

我还要提到我不知道A * applys在这种情况下,如果是这样,我不能确定如何执行给定的约束。 这里唯一的真正的变量是对象的面。

下面是一些示例代码:

public int[] currentCoords;
public void movement() {
  currentCoords[0] = 1005; // starting y coord
  currentCoords[1] = 1007; // starting x coord
  moveTo(1050, 1025);
}

public void moveTo(int x, int y) {
  ... how?
}

public void threadUpdatingCoords() {
   ... periodically check for source coord updates
   ... between 200ms and 1000ms apart.
}

Answer 1:

为了计算出最优路线,你应该使用A *算法。 但是这样做的最人性的方式,你就让它往前走,随机方向。 除非它是一个聪明的人,他就坚持他的右手在墙上,一直走不失触摸:最终你会达到你的目的地。

人的效率不高,这是随机的。 A *是不是随机的,它是有效的。



文章来源: C# Pathing algorithm for moving a object from point(X, Y) to point(X, Y)