前提・実現したいこと
キャラクターの攻撃モーションにあわせてオブジェクトにダメージを与えようとしています。
キャラクターの手のボーンの子オブジェクトにセットしたColliderと対象のオブジェクトとの当たり判定(OnTriggerEnter)を取りたいのですが、攻撃モーション中に当たり判定(OnTriggerEnter)が発生していません。
[手の子オブジェクト]
SphereCollider
・IsTrigger True
・Radius 0.15
下記のHitColliderスクリプトをつけています
[攻撃対象のオブジェクト]
BoxCollider
・IsTrigger False
・Size 1,1,1(TransfromのScaleが2,2,2のため実際は2,2,2のサイズになっています)
Rigidbody
・UseGravity True
・IsKinematic False
・Collision Detection Discrete
該当のソースコード
C#
1 public class HitCollider : MonoBehaviour 2 { 3 //m_ColliderにSphereColliderが指定されていることは確認済み 4 [SerializeField] private Collider m_Collider; 5 6 public void HitStart() 7 { 8 //Animationから呼ばれていることは確認済み 9 m_Collider.enabled = true; 10 } 11 12 public void HitEnd() 13 { 14 //Animationから呼ばれていることは確認済み 15 m_Collider.enabled = false; 16 } 17 18 private void OnTriggerEnter(Collider other) 19 { 20 Debug.Log("HitCollider[" + gameObject.name + "] HitTaget[" + other.gameObject.name + "]"); 21 22 //ダメージを与える処理は省いています。 23 } 24 }
試したこと
攻撃モーションの再生速度を0.1にしてSceneビューで目視した限りではSphereColliderとBoxColliderは衝突しています。
移動モーション中に攻撃対象に手が接触するとSphereColliderとBoxColliderのOnTriggerEnterが呼ばれることは確認できました。
攻撃対象のCollision DetectionをDiscrete以外のすべてでも試しましたがOnTriggerEnterが呼ばれません。
他に確認すべき点があればご指摘ください。
--- 追記 ---
対象との距離や角度によってはOnTriggerEnterが呼ばれる場合があることがわかりました。
手の子オブジェクトのColliderをIsTrigger Falseに変更し、Rigidbodyを追加してOnCollisionEnterでも試してみましたが同様に判定が出たり出なかったりで安定しません。
補足情報(FW/ツールのバージョンなど)
Unity 2019.2.5f1
回答1件
あなたの回答
tips
プレビュー