2017-02-02 13 views
1

Как я могу определить, находится ли игрок рядом с объектом. Без помощи raycast.Как определить, находится ли игрок рядом с GameObject (C#) Unity5

Вот мой код:

[SerializedField] 
Transform obj1; 

public GameObject player; 

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

Это то, что я хотел бы получить. Как я могу сделать это так. Помогите пожалуйста

+1

' 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).magnitude < 5.0f) 
    audio.Play(); 

Как немного чаевых производительности, вы можете сохранить дорогостоящую операцию квадратного корня путем вместо этого используя величину в квадрате:

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

Можете ли вы объяснить мне, сэр, почему у этого всегда есть sqrMagnitude? Как далеко это будет? – TheGinxx009

+0

@ TheGinxx009 Если вам не нужно точное расстояние, то квадрат расстояния дешевле рассчитать, потому что ему не нужно вычислять квадратный корень. Это также приемлемо в этой ситуации, потому что если 'dist Abion47

+0

вл. Извините, только новичок в векторах. спасибо в любом случае – TheGinxx009

0

Вы можете найти ли объект находится вблизи другого объекта со следующим кодом:

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