実現したいこと
Unity3Dで上から落ちてくるブロックをモデルを動かして避けるゲームの作成。
モデルとブロックが衝突した際、ブロックが弾けるという機能を実装する。
地面まで落ちたブロックはそこで消滅し、得点となり、地面まで落ちたブロックの数などによってスコアが決まる
発生している問題・分からないこと
モデルとブロックが明らかに衝突しているのに、モデルとブロックの衝突判定が出ない。
デバッカーを置いているが、反応なしですべて地面に落ちている。
該当のソースコード
C#
1//ブロック制御用スクリプト 2 void Update() 3 { 4 transform.Translate(Vector3.down * speed * Time.deltaTime); 5 if (transform.position.y < 0) 6 { 7 Debug.Log("地面に落ちた"); 8 gameController.AddScore(points); // スコアを加算 9 Destroy(gameObject); 10 } 11 } 12 13 void OnCollisionEnter(Collision collision) 14 { 15 if (collision.collider.CompareTag("Model")) 16 { 17 Debug.Log("モデルと衝突した"); 18 Instantiate(explosionEffect, transform.position, Quaternion.identity); // 爆発エフェクトを生成 19 Destroy(gameObject); 20 } 21 } 22}
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
OnTriggerEnterを別のものに変えてみたが効果はなし
モデルとブロックの設定を確認してみたが効果はなし
補足
モデル
タグ:Model
Collider:メッシュCollider
凸状にする:ON
トリガーにする:ON
接触を生成する:ON
Rigidbody:キネマティックにする:ON
ブロック
タグ:block
Collider:メッシュCollider+BOXCollider
凸状にする:ON
トリガーにする:ON
接触を生成:OFF
Rigidbody:キネマティックにする:ON
![guest](/img/icon/icnUserSample.jpg)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。