2017-02-02 2 views
1

プレイヤーがオブジェクトの近くにいるかどうかをどうやって検出するのでしょうか? レイキャストの助けがなければ。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.positionVector3を返します。あなたの距離としてそのベクトルの大きさを使用することができます。

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

ow。ごめんなさい。とにかくおかげです。 – TheGinxx009

0

あなたがオブジェクトは、次のコードを使用して、他のオブジェクトの近くにあるかどうかを見つけることができます。

float distance = Vector3.Distance(object1.transform.position, object2.transform.position); 
float maxDistance = 10.0f; 
bool isNear = distance <= maxDistance; 
関連する問題