我想实现一个函数,其中一个对象跟随C ++中的移动对象。任何提示如何做到这一点将对我有很大帮助。
答案 0 :(得分:0)
这实际上取决于运动应该如何发生。得到一个共同的答案是不可能的。对于具有固定节点的地图(或像网格一样的简单棋盘),请使用路径寻找算法,例如A *。
对于开放/自由移动,您很可能希望将对象(或其运动矢量)转向目标,然后加速/减速。
但如果没有进一步的细节,就不可能给出任何完美的答案。
答案 1 :(得分:0)
这篇优秀的帖子说明了,我引用它:
玩家的位置是point1。敌人的位置是第2点。第一 你需要找到x1和x2以及y1和y2之间的差异 (我将这些称为xd和yd)。然后你可以得到之间的角度 通过做theta = atan(yd / xd)得到两点。现在你应该能够得到 使用角度和新的x和y(我将称之为x3和y3) 你想要旅行的距离x3 =(d)(cos(theta))和y3 = (d)(SIN(THETA))。将敌人移动到(x3,y3)。
d是每次更新时敌人移动的速度。你可能不得不搞砸 有迹象表明方向是正确的(即如果敌人进入 正确的x方向但错误的y方向然后更改登录 Y)。
答案 2 :(得分:0)
仅使用x和y,这是一个非常简单的向量问题。
使用单位矢量作为方向。将此乘以标量,表示您希望跟随者在一个单位时间内行进的距离。这将为您提供新的相对位置。单位矢量应该是从跟随者指向领导者的方向。