UnityでMMDモデルを使って格闘ゲームを作ろうとしているのですが、
製作過程で3Dオブジェクト同士(プレイヤーと敵)の衝突判定について問題がでてきたので
解決方法を教えていただきたいです。
問題は3Dオブジェクト同士が当たったときに、スクリプトに書いてある処理が行われないということです。
ゲームの仕組みは下に書いてあります。
プレイヤー(タグはPlayer)
・Capsule Collider(床をすり抜けないようにするため)
→Is Triggerはチェックをはずしてあります。
・Capsule Collider(プレイヤーの当たり判定用)
→Is Triggerはチェックをつけています。
→Colliderの大きさ等は上と同じ
・Rigidbody(当たり判定を有効にするため)
→Freeze RotationはX,Y,Zの全てにチェックを付けました。
(付けないとゲーム開始と同時にプレイヤーが傾き始めるため)
・C#スクリプト(プレイヤー操作用)
⇒プレイヤーの手
・Sphere Collider(当たり判定用)
・C#スクリプト(手が敵に当たったかどうかを見るため)
⇒プレイヤーの足
・Capsule Collider(当たり判定用)
・C#スクリプト(足が敵に当たったかどうかを見るため)
※手と足についているスクリプトは同じもの
敵はスクリプト以外は全て同じ(タグはenemy)
プレイヤーの当たり判定用のスクリプト
using UnityEngine;
using System.Collections;
public class HitCheck : MonoBehaviour {
// Use this for initialization void Start () { } // Update is called once per frame void Update () { } void OnCollisionEnter(Collision col){ if (col.gameObject.tag == "enemy") { Debug.Log("E_Hit!"); } }
}
敵の当たり判定用のスクリプト
using UnityEngine;
using System.Collections;
public class EnemyHitCheck : MonoBehaviour {
// Use this for initialization void Start () { } // Update is called once per frame void Update () { } void OnCollisionEnter(Collision col){ if (col.gameObject.tag == "Player") { Debug.Log("P_Hit!"); } }
}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。