如何检测玩家是否靠近 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();
我怎样才能检测到玩家是否在物体附近。 没有光线投射的帮助。
这是我的代码:
[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();