2017-02-02 43 views
1

如何檢測玩家是否靠近對象。 沒有raycast的幫助。如何檢測玩家是否接近GameObject(C#)Unity5

這裏是我的代碼:

[SerializedField] 
Transform obj1; 

public GameObject player; 

void Update(){ 
    if(obj1.transform.position - player.position < 5) { 
     audio.Play(); 
    } 
} 

這是我喜歡獲得。我怎麼能這樣做。請幫助

+1

':

if ((obj1.transform.position - player.position).magnitude < 5.0f) audio.Play(); 

帶有一點性能技巧的,你可以不使用平方大小節省昂貴的平方根運算Vector3.Distance' – Gusman

+0

[Vector3.Distance函數]的參考(https://docs.unity3d.com/ScriptReference/Vector3.Distance.html) –

回答

1

obj1.transform.position - player.position將返回Vector3。您可以使用向量的大小爲你的距離:

if ((obj1.transform.position - player.position).sqrMagnitude < 25.0f) 
    audio.Play(); 
+0

您能向我解釋一下爲什麼它總是有sqrMagnitude?會有多遠? – TheGinxx009

+0

@ TheGinxx009如果您不需要精確的距離,則距離平方計算起來更便宜,因爲它不需要計算平方根。在這種情況下也是可以接受的,因爲如果'dist Abion47

+0

ow。對不起剛剛接觸矢量。無論如何,感謝 – TheGinxx009

0

你可以找到一個對象是否接近用下面的代碼另一個對象:

float distance = Vector3.Distance(object1.transform.position, object2.transform.position); 
float maxDistance = 10.0f; 
bool isNear = distance <= maxDistance;