如何检测玩家是否靠近 GameObject(C#)Unity5

How to detect if player is near to a GameObject(C#)Unity5

我怎样才能检测到玩家是否在物体附近。 没有光线投射的帮助。

这是我的代码:

[SerializedField]
Transform obj1;

public GameObject player;

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

这就是我想得到的。我怎么能那样做。请帮忙

您可以使用以下代码查找一个对象是否靠近另一个对象:

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

obj1.transform.position - player.position 会 return 一个 Vector3。您可以使用该矢量的大小作为您的距离:

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

作为一点性能提示,您可以通过使用幅度平方来节省昂贵的 square-root 操作:

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