2014-10-28 89 views
0

我想讓一些敵人從我的玩家處逃跑。我發現了代碼向這個遊戲前進,並使它變得相反。問題是他們逃跑時速度真的很快。如果我讓代碼重新朝向角色跑,他們以正常的速度移動。爲什麼是這樣?遠離角色

出走

Vector2 velocity = new Vector2((transform.position.x - player.position.x) * speed, (transform.position.y - player.position.y) * speed); 
rigidbody2D.velocity = velocity; 

Vector2 velocity = new Vector2((transform.position.x - player.position.x) * speed, (transform.position.y - player.position.y) * speed); 
rigidbody2D.velocity = -velocity; 

回答

1

運行我想象中的人物居然會放慢,因爲他們接近你......這就是你的代碼寫會做。

基本上,你有(End - Start) * Speed ...這意味着End - Start的長度乘以速度。所以如果角色距離5米,速度= 5米*速度等。

你需要的是((End - Start)/(End - Start).Length()) * Speed

通過除以End - Start的長度,您可以從等式中移除距離,並純粹獲得一個方向乘以所需速度。

+0

那是正確的。謝謝。我沒有完全理解它就抓住了這段代碼。我將它改爲 Vector2 direction = transform.position - player.transform.position; \t \t \t direction.Normalize(); \t \t \t transform.position = Vector2.MoveTowards(transform.position,direction * minDistance,Time.deltaTime * speed); – Draco 2014-10-28 03:41:05