Unity バージョン2018.4.9f1
---質問内容---
3Dアクションゲームで地面、攻撃、移動範囲の当たり判定を分けたくプレイヤーの子に空のオブジェクトを作りそこに当たり判定を入れて複数のコリジョンを取りたいです。OnTriggerではなく"OnCollisionEnter"を使う方法が知りたいです。
※画像にはありませんが Rigidbodyを付けない版、つける版両方やりました。
空のゲームオブジェクトについてです。is TriggerをオンにするとOnTriggerEnterのスクリプトは反応するのは知ってますが自分はOnCollisionEnterで行いたいです。OnCollisionEnterを使うにはRigidbodyを入れないと使えないため提示画像通りRigidbodyを入れis Kinematicをオフにするとプレイヤーだけ落下してしまい足元の地面判定が取れません、またis kinematicをオンにするとプレイヤーと一緒に落下しますがCollsiion Triggerともに反応しませんまた常にuse gravityはオフです。またプレイヤースクリプトは常に落下する重力落下処理が書かれているはずです。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class ground : MonoBehaviour { bool isGround; // Start is called before the first frame update void Start() { isGround = false; } // Update is called once per frame void Update() { // Debug.Log("Ground"); } private void OnCollisionEnter(Collision collision) { Debug.Log("Collision 地面判定!"); } private void OnTriggerEnter(Collider other) { Debug.Log("Trigger 地面判定!"); } }
スクリプト
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Player : MonoBehaviour { Rigidbody rb; Vector3 move; // GameObject go = GameObject.Find("GameObject"); // Start is called before the first frame update void Start() { rb = GetComponent<Rigidbody>(); } // Update is called once per frame void Update() { move.x = Input.GetAxis("Horizontal"); move.z = Input.GetAxis("Vertical"); } /*アニメーション管理*/ void Animation_Mng() { } private void FixedUpdate() { rb.AddForce(new Vector3(0,-10.0f,0)); rb.velocity = new Vector3(move.x, rb.velocity.y, move.z); } private void OnCollisionEnter(Collision collision) { //Debug.Log("プレイヤーcollision"); } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/10/13 10:38
2019/10/16 01:52
退会済みユーザー
2019/10/23 00:16 編集
2019/10/21 01:54
退会済みユーザー
2019/10/23 00:33
退会済みユーザー
2019/10/23 00:57
退会済みユーザー
2019/10/23 00:57
2019/10/23 04:39
退会済みユーザー
2019/10/23 08:06
退会済みユーザー
2019/10/23 09:31