【unity】敵キャラを作って勝手に動くようにする【4日目、スクリプト、当たり判定】

前回の記事
www.momino1234.com

🎯 目標

敵を画面に出す

勝手に動くようにする

① 敵を作る

Hierarchyで右クリック

👉 2D Object → Sprite → Square

名前を「Enemy」に変更

見た目

Inspectorで👇

Color → 赤にする(敵っぽい)

サイズ
Scale
X → 0.5
Y → 0.5

② 当たり判定をつける

Enemyを選んで👇

Add Component

👉 Box Collider 2D

👉 Rigidbody 2D

Rigidbody設定
Gravity Scale → 0

👉 落ちないようにする

③ 敵の動きスクリプト

新しいスクリプト作る

Assetsで右クリック
👉 Create → empty # Script
👉 名前「EnemyMove」

コード

  1. using UnityEngine;
  2. public class EnemyMove : MonoBehaviour
  3. {
  4.     public float speed = 2f;
  5.     void Update()
  6.     {
  7.         transform.position += Vector3.left * speed * Time.deltaTime;
  8.     }
  9. }



→Enemyにドラッグしてつける

④ 画面外から出す(位置)

Enemyの位置を👇にする

X → 5
Y → 0

👉 右から出てくる

⑤ プレイヤーに当たったら検知

Playerに
👉 Box Collider 2D
👉 Rigidbody 2D
を追加してない場合追加する

スクリプト追加

PlayerMoveにこれ追加👇


  1. void OnCollisionEnter2D(Collision2D collision)
  2. {
  3.     if (collision.gameObject.name == "Enemy")
  4.     {
  5.         Debug.Log("当たった!");
  6.     }
  7. }
  8. }

前回までのと合わせてこんな感じ

  1. public class PlayerMove : MonoBehaviour
  2. {
  3.     public float speed = 5f;
  4.     void Update()
  5.     {
  6.         float x = Input.GetAxis("Horizontal");
  7.         float y = Input.GetAxis("Vertical");
  8.         Vector3 move = new Vector3(x, y, 0);
  9.         transform.position += move * speed * Time.deltaTime;
  10.         float clampX = Mathf.Clamp(transform.position.x, -5f, 5f);
  11.         float clampY = Mathf.Clamp(transform.position.y, -3f, 3f);
  12.         transform.position = new Vector3(clampX, clampY, 0);
  13.     }
  14.     void OnCollisionEnter2D(Collision2D collision)
  15.     {
  16.         if (collision.gameObject.name == "enemy")
  17.         {
  18.             Debug.Log("当たった!");
  19.         }
  20.     }
  21. }



⑥ テスト

▶ 再生

👉 敵が左に動く
👉 当たるとログ出る


⚠️ よくあるミス

Rigidbodyが両方にない → 当たらない

Colliderがない → すり抜ける

Zが違う → 見えない

次の記事
www.momino1234.com