2011-12-28 39 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,這是一個非常簡單的向量問題。

對方向使用單位矢量。乘以一個標量的距離,你希望跟隨者在一個單位時間內行進。這會給你你新的相對位置。單位矢量應該指向從追隨者到領導者的方向。