2017-07-19 8 views
0

オブジェクトの近くで特定のキーを押すと、各プレハブにトリガが必要です。私はまた、プレハブとプレイヤーの各インスタンスの間に衝突が必要で​​す。私はプレハブで "トリガが"選択されたときに働くように見えるだけです。これを処理する正しい方法は何ですか?同じプレハブで衝突とトリガが必要

答えて

1

プレイヤーがキーを押してオブジェクトのスクリプトで関数を実行すると、オブジェクトにトリガーを使用する代わりにPhysics.OverlapSphereを使用して範囲のすべてのオブジェクトを検索します。

トリガイベント:

void Update() { 
    if (Input.GetKeyDown("space")) 
    { 
     ApplyEffect(transform.position, RADIUS); 
    } 
} 

RADIUSがプレイヤーに所望の近接

方法1:

void ApplyEffect(Vector3 center, float radius) 
{ 
    Collider[] hitColliders = Physics.OverlapSphere(center, radius); 
    int i = 0; 
    while (i < hitColliders.Length) 
    { 
     hitColliders[i].gameObject.GetComponent<SCRIPT_NAME>().EFFECT_FUNCTION(); 
     i++; 
    } 
} 

SCRIPT_NAMEは、ターゲットオブジェクト上のスクリプトの名前です。
EFFECT_FUNCTIONは、スクリプト内の関数の名前です。

方法2:
ドキュメントの例に示す機能と同様のオブジェクトの機能を実行するためのメッセージングシステムを使用します。https([ハウツー回答]これは最初に見 https://docs.unity3d.com/ScriptReference/Physics.OverlapSphere.html

1

プレーヤーが閉じて特定のキーに当たったときに、オブジェクトのインターフェイスを使用できます。オブジェクトの衝突によって衝突が処理される可能性がありますが、トリガーになる必要がある特定の理由はありますか? thisをチェックし、isTriggerの問題を解決するかもしれません。

+0

してください://stackoverflow.com/help/how-to-answer) この質問は以前から回答がありました。しかし、あなたは答える前にいくつかの点を理解する必要があります。まず、以前に同じコードまたは提案で追加された回答を追加しないでください。第2に、ユーザーが問題について非常に具体的に尋ねてきた場合や、これを解決する必要がある場合は、複雑すぎる回答を加えないでください。第三に、答えや質問に関する何かを提案したい場合は、コメントを追加することができます。 –

関連する問題