Вопрос:

Как определить, находится ли игрок рядом с GameObject (C #) Unity5

c# unity5

810 просмотра

2 ответа

701 Репутация автора

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

Вот мой код:

[SerializedField]
Transform obj1;

public GameObject player;

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

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

Автор: Ginxxx Источник Размещён: 02.02.2017 07:25

Ответы (2)


0 плюса

8850 Репутация автора

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

float distance = Vector3.Distance(object1.transform.position, object2.transform.position);
float maxDistance = 10.0f;
bool isNear = distance <= maxDistance;
Автор: Aybe Размещён: 02.02.2017 07:31

1 плюс

6870 Репутация автора

Решение

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();
Автор: Abion47 Размещён: 02.02.2017 07:40
Вопросы из категории :
32x32