2016-06-23 22 views
0

私は別の車のアニメーションがMAXからインポートした道路を走行を持っています。私は車が別の車からトリガを開始すると停止するようなインテリジェントなシステムを作りたいです。これまで私はこれを試しました。左/ハンドル車のアニメーションと衝突

  1. を追加しました4タグ名車で衝突型加速器(あなたは図1に見ることができるように)、carBack、carLeft、CarRight enter image description here

  2. 車は右、このコードが含まれています。車の開始がcarBackと衝突した場合ことを確認し、右コライダーこのコライダーは車のオブジェクトにヒットした場合、その後の車になって停止が。(そして、トリガー終了時に、それが再開)することを、左の車にこのスクリプト

    void OnTriggerEnter(Collider c) 
        { 
         if (c.tag == "Car") 
         { 
          Debug.Log("collided with : carsideTriggerScript :" + c.transform + " - object Name to stop : " + gameObject.name); 
          c.transform.gameObject.GetComponent<AnimationControlSpeed>().Speed = 0; 
          //StartCoroutine(DecreaseSpeedGradually(transform.gameObject.GetComponent<AnimationControlSpeed>())); 
         } 
        } 
    
        void OnTriggerExit(Collider c) 
        { 
         if (c.tag == "Car") 
         { 
          Debug.Log("Exi collided with : carsideTriggerScript:" + c.transform + " - object Name to resume : " + gameObject.name); 
          c.transform.gameObject.GetComponent<AnimationControlSpeed>().Speed = 1; 
         } 
        } 
    
  3. 追加したスクリプトを追加しましたコライダーを停止してからトリガーを終了すると、再開します。上記と同じスクリプトです。

    しかしシナリオでは、図2

enter image description here

で、私はそれを処理することを可能にしています見ることができる作成しています。 1台の車が衝突してcarRightColliderに衝突し、同じことが別の車で起こって、両方の車が停止して再び動くことができないように見える。 どうすればそれを制御できますか?同一のスクリプトが同じOntriggerEnterとロジックを持つすべてのゲームオブジェクトに添付されているためです。

+0

あなたが球またはカプセルコライダー – slf

+0

なぜ必要なように見えますか?理由は何ですか –

+0

あなたはあなたのコライダーの間にギャップがあります。大きなコライダーを作成するか、既存のコライダーが重複していることを確認してください – slf

答えて

0

あなたの質問をもう一度読んだら、今私は理解していると思います。あなたは2台の車を持っていて、衝突すると両方が止まります。 1台の車を停止し、1台の車を停止させたいだけです。

あなたが最初に行くどちら気にしない場合は、それが最も簡単です。衝突したすべての車両を保持するためのキューとして機能するためのコレクションが必要です。それを「レジューム運転待ち行列」と呼んでみましょう。車が他の車と衝突した場合は、停止してキューに追加します。その後、タイマーや他のロジックに基づいて、キューから次の車を1台ずつ取ることができます。車が停止している場合は、それを開始します。

あなたが行くために誰が見るための「勝者」を選択する必要がある場合は、それはもう少し複雑かもしれません。これの基本的な例は、警察や消防車のような緊急車両が優先され、他の車は待たなければならない可能性があります。この場合、あなたの車のオブジェクトのそれぞれに、彼らが勝つかどうかを確認するために衝突中に転がすことができるダイのような交通優先プロパティーを与えることが望ましいでしょう。次に、各車が生成する乱数を優先順位順にレジューム運転キューに挿入することができます。