敵側がプレイヤーを認識しない

実現したいこと

ローグライクを作っていて敵がプレイヤーを素通りしないようにしたい。

発生している問題・分からないこと

Playerに近づいても攻撃をしないで素通りする。

該当のソースコード

C#

12protected virtual void AttemptMove(int xDir,int yDir)3 {4 5 Player p = new Player();6 Vector2 StartPosition = transform.position;7 Vector2 EndPosition = StartPosition + new Vector2(xDir, yDir);8 9 //移動判定用 衝突するレイヤーはすべて入れる10 int LayerObj = LayerMask.GetMask(new string[] { "Chara","Object" ,"Item","Repair"});11 //攻撃判定用 HPのあるオブジェクトを置くレイヤーは全て入れる12 int LayerCha = LayerMask.GetMask(new string[] { "Chara" });13 //アイテム用14 int LayerItem = LayerMask.GetMask(new string[] { "Item" });15 //修理場所用16 int LayerRp = LayerMask.GetMask(new string[] { "Repair" });17 this.rb = GetComponent<Rigidbody2D>();18 this.boxCollider = GetComponent<BoxCollider2D>();19 //自身の衝突判定を無くしてPhysics2Dの誤確認を無くす20 boxCollider.enabled = false;21 //移動先に障害物があるか判定する22 RaycastHit2D HitObj = Physics2D.Linecast(StartPosition, EndPosition, LayerObj);23 RaycastHit2D HitCha = Physics2D.Linecast(StartPosition, EndPosition, LayerCha);24 RaycastHit2D HitItem = Physics2D.Linecast(StartPosition, EndPosition, LayerItem);25 RaycastHit2D HitRp = Physics2D.Linecast(StartPosition, EndPosition, LayerRp);26 27 //衝突判定を戻す28 boxCollider.enabled = true;29 30 31 32 Debug.Log(i+""+this.gameObject+"LineHit" +HitObj.transform);33 34 i++; 35 36 //RaycastHit2Dで移動先に障害物が無ければMovementを実行37 if (HitObj.transform == null)38 {39 StartCoroutine(Movement(EndPosition));40 }41 42 //RaycastHit2Dで移動先にプレイヤーかエネミーがいればHitComponentに入れてOnCantMoveを実行43 else if (HitCha.transform != null )44 {45 if (HitCha.transform.tag != this.gameObject.tag)46 {47 GameObject HitCompnent = HitCha.transform.gameObject;48 OnCantMove(HitCompnent); 49 }50 }51 if (this.gameObject.tag == "Player")52 {53 //アイテムのあたり判定54 if (HitItem.transform != null)55 {56 57 GameObject HitCompnent = HitItem.transform.gameObject;58 p.Itempuls(HitCompnent);59 }60 //修理場所のあたり判定61 if (HitRp.transform != null)62 {63 GameObject HitCompnent = HitRp.transform.gameObject;64 p.Repair(HitCompnent);65 }66 }67 68 69 }

試したこと・調べたこと

上記の詳細・結果

他のローグライクを作っている人のコードも見ましたを見たり、Layerの確認もしましたが敵側は相変わらずプレイヤーを素通りしました。

補足

Unityのバージョンは2021.3.19f1です。
Player側は敵にあたっても素通りしません。

コメントを投稿

0 コメント