前提・実現したいこと
UnityでNPCの特定の範囲にプレイヤーキャラが入ったときにそのNPCとの会話シーンに遷移するスクリプトを実装したいのですが、うまくできなくて悩んでいます。
今は力ずくでNPCにシリンダーを付けて下記のスクリプトをアドしてるんですけど反応が無く出来ればシリンダーを使わないスクリプトを教えてもらえたらと思います。
該当のソースコード
C#
1using UnityEngine; 2using UnityEngine.SceneManagement; 3 4public class NPCcomyu : MonoBehaviour 5{ 6 private void OnCollisionEnter(Collision other) 7 { 8 if (other.gameObject.tag == "Player") 9 { 10 Debug.Log("当たったよ"); 11 SceneManager.LoadScene("会話シーン"); 12 } 13 } 14}
補足情報(FW/ツールのバージョンなど)
Unity 2019,3,15f1
VisualStudio2019
「範囲内」ということはもしかしてisTrrigerオンの状態ですか? もしそうならOnCollisionEnterではなくOnTriggerEnterを使用します。
https://docs.unity3d.com/jp/current/ScriptReference/Collider.OnTriggerEnter.html
また、Debug.Log(other.gameObject.tag);をif文の外に書いて本当にタグがPlayerか確認してください。
Colliderを使わない場合はBoxcast/Spherecastが候補に上がるかと思います。どれがいいかは適宜判断してください。
http://tsubakit1.hateblo.jp/entry/2016/02/25/025922
OnTriggerEnterを使用したところ問題なく会話シーンに飛べました、ご指摘ありがとうございます。
Boxcast/Spherecasを使う方法も一応扱いたいと思います。
回答1件
あなたの回答
tips
プレビュー