1. ホーム
  2. android

[解決済み] unity OnTriggerExit2D が常に機能するとは限りません。

2022-02-12 15:08:40

質問

私は小さなunityゲームを持っていて、動きとアニメーションスクリプトが付属しているプレハブから指のクローンをインスタンス化し、衝突を検出するビューポートサイズと同じボックスコライダーオブジェクトと増加オブジェクトカウンター(すなわち、画面に表示されている指の複製インスタンスの数のカウンター)を持っているところです。

オブジェクトは1秒から3秒のランダムな間隔で画面に現れ、プレイヤーは次のオブジェクトが来るまで指をくわえていなければならない。画面が真っ白になったらゲームオーバーです。

このロジックを実装するために、ビューポートと同じ大きさのbox2dコライダーを使い、指にbox2dコライダーを取り付けました。

OnTriggerEnter2Dは、常にスタティック・オブジェクト・カウンターの値を増加させますが、常にトリガーされるわけではありません。

指のオブジェクトにもアニメーションが付属していますが、これはプレイヤーが指を握ったり押したりしたときのみ再生され、オブジェクトが画面に入ったり出たりするときには再生されません。

以下は、指のオブジェクトのコードです。

    using UnityEngine;
    using System.Collections;
    public class checkCollisionwithBox : MonoBehaviour {
        bool collided = false;

        void OnTriggerEnter2D(Collider2D other) {
            if (other.gameObject.tag == "mesh") {
                if (this.collided == false ) {      
                   GameController.GoodFingerOnScreen++;
                   this.collided = true;
                }
              }
           }
        void OnTriggerExit2D(Collider2D other) {
          if (other.gameObject.tag == "mesh") {
            if (GameController.GoodFingerOnScreen != 0) {   
                GameController.GoodFingerOnScreen--;
             }
           Destroy (this.gameObject);
         }
       }
   }

解決方法は?

リジッドボディコンポーネントのコライダー検出で、連続検出のオプションを試してみてください。そうでない場合は、debug.logを使用するか、シーンビュー内でチェックして、指が常にトリガーから外れていることを確認してください。