2013-06-27 111 views
-1

我使用正弦和餘弦移動角色。如何做停止狀態

player.x += Math.cos(angle) * speed; 
player.y += Math.sin(angle) * speed; 

當前的停止條件是distance < n。但是如果速度太快,有時候角色不會停下來,並且會一直持續下去。什麼是使其停止正確的地方的最佳途徑?

PS:它隨着鼠標點擊而移動。我點擊並且玩家直接移動到點擊的點。

回答

0

一個快速的解決方法是檢查當前的distance是否比前一個(前一個動畫幀中的那個)短。這意味着角色正在接近目標。如果它沒有接近它(當前距離實際上高於前一個距離),這意味着它已經通過它,所以它必須停止。

僞代碼:

if distance < n or lastDistance<distance then 
    stop; 
lastDistance = distance; 

停止後,應查找目標位置的字符(否則,它會留在overshooted位置靜態)。

編輯:如果您不介意在達到其目標前停止一下字符,您可以嘗試使用取決於當前speed的值n。那樣的話,如果角色走得快,那麼當角色進入更大的區域時,角色就會停止。