2011-12-28 34 views
0

我想实现一个函数,其中一个对象跟随C++中的移动对象。任何提示如何做到这一点对我都有很大的帮助。跟在对象后面的对象

+1

这很含糊,你想详细说明一下吗? – AusCBloke 2011-12-28 23:12:10

+1

对象,如在OOP中?或对象在屏幕上的一个圆圈?还是其他什么东西? – 2011-12-28 23:12:22

+1

你必须提供更多信息。什么对象,通过相机物理?听起来像你在错误的论坛... – 2011-12-28 23:13:18

回答

0

这出色的状态后,我从它引用:

球员的位置点1。敌人的位置是point2。首先 你需要找到x1和x2以及y1和y2之间的差别, (我会称这些xd和yd)。然后,通过执行theta = atan(yd/xd),您可以得到两个点之间的角度。现在,您应该能够通过使用角度和想要传播的距离(其中x3 =(d)(cos(theta))和y3 = 获得新的x和y(我将称为x3和y3) (d)(SIN(THETA))。将敌人移至(x3,y3)。

d是敌人每次更新移动的速度。你可能不得不用 的符号弄明白方向(即如果敌人在 移动正确的x方向但错误的y方向然后改变 y的符号)。

这里更多:Game enemy move towards player

+0

尼斯迈克尔,这是我实现的几乎相同的解决方案,除了我用acos来降低我的变量数量。 ;)谢谢,我会评价这是最好的答案。 – 2011-12-29 00:05:11

+0

这假定玩家静止。此外,这一切都是不必要的。艾萨克法伊夫描述了正确的计算。 – 2011-12-29 01:39:18

0

这真的取决于运动应该如何发生。得到一个共同的答案是不可能的。对于具有固定节点的地图(或像网格那样的简单象棋板),使用A *等寻路算法。

对于开放/自由移动,您很可能想将目标(或其运动向量)转向目标,然后加速/减速它。

但没有进一步的细节,它是不可能给任何完美的答案。

+0

感谢您的回复,马里奥。至于我Q.的关注,我实现了自由移动,没有向量,xy定位移动。这个场景的任何提示? – 2011-12-28 23:26:18

0

只需使用X和Y,这是一个非常简单的向量问题。

对方向使用单位矢量。乘以一个标量的距离,你希望跟随者在一个单位时间内行进。这会给你你新的相对位置。单位矢量应该指向从追随者到领导者的方向。