-1
我使用正弦和餘弦移動角色。如何做停止狀態
player.x += Math.cos(angle) * speed;
player.y += Math.sin(angle) * speed;
當前的停止條件是distance < n
。但是如果速度太快,有時候角色不會停下來,並且會一直持續下去。什麼是使其停止正確的地方的最佳途徑?
PS:它隨着鼠標點擊而移動。我點擊並且玩家直接移動到點擊的點。
我使用正弦和餘弦移動角色。如何做停止狀態
player.x += Math.cos(angle) * speed;
player.y += Math.sin(angle) * speed;
當前的停止條件是distance < n
。但是如果速度太快,有時候角色不會停下來,並且會一直持續下去。什麼是使其停止正確的地方的最佳途徑?
PS:它隨着鼠標點擊而移動。我點擊並且玩家直接移動到點擊的點。
一個快速的解決方法是檢查當前的distance
是否比前一個(前一個動畫幀中的那個)短。這意味着角色正在接近目標。如果它沒有接近它(當前距離實際上高於前一個距離),這意味着它已經通過它,所以它必須停止。
僞代碼:
if distance < n or lastDistance<distance then
stop;
lastDistance = distance;
停止後,應查找目標位置的字符(否則,它會留在overshooted位置靜態)。
編輯:如果您不介意在達到其目標前停止一下字符,您可以嘗試使用取決於當前speed
的值n
。那樣的話,如果角色走得快,那麼當角色進入更大的區域時,角色就會停止。