前提
Unity2021 3.15fにて見下ろし型の3Dアクションゲームを作っています
実現したいこと
そこで、プレイヤーから円状の一定範囲内に敵が入ると、
プレイヤーが自動で攻撃開始をするようにしたいと思い、
その範囲内にいるかの判定を行うために、
Update文内にて、Spherecastを使って敵にEnemyというタグをつけて、判定しようとしております。
OnTriggerEnterやStayでは、敵がDestroyで消滅した際に、上手く判定しがたかったので、
Spherecastでチェックしようと下記のコードを記載し、プレイヤーにセットしました。
発生している問題・エラーメッセージ
どういうわけか再生してみると、敵がSpherecast内に入ってきても、
判定が入ることもあれば入らないことも起きます。
再生ボタンを押して、プレイヤーは全く動かず同条件で敵が範囲内に入ってきて、
そういうことが起きますので、条件次第というのも考え難いです。
また、敵のスピードが速すぎるということもありません。
範囲内に来て、何秒たっても判定が入らないので、
一度範囲外にもっていってから再度入りなおしたりすると判定が入ったりします。
特にエラーなどは吐いておりません。
何が原因と考えられますでしょうか?
何卒よろしくお願い致します。
該当のソースコード
Unity
1void OnDrawGizmos() //スフィアキャスト可視化 2 { 3 Gizmos.color = Color.red; 4 Gizmos.DrawWireSphere(transform.position + transform.forward * 0.01f, 8.0f); 5 } 6 7void Update() 8 { 9 RaycastHit hit; 10 if (Physics.SphereCast(this.transform.position, 8f, transform.forward, out hit, 0.01f)) 11 { 12 if(hit.collider.CompareTag("Enemy")) 13 { 14 canShoot = true; 15 Debug.Log("スフィアレイにあたった"); 16 } 17 } 18 } 19
試したこと
補足情報(FW/ツールのバージョンなど)
Unity2021 3.15fを使用。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/01/11 13:36