前回の記事
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」
コード
- using UnityEngine;
- public class EnemyMove : MonoBehaviour
- {
- public float speed = 2f;
- void Update()
- {
- transform.position += Vector3.left * speed * Time.deltaTime;
- }
- }
→Enemyにドラッグしてつける
④ 画面外から出す(位置)
Enemyの位置を👇にする
X → 5
Y → 0
👉 右から出てくる
⑤ プレイヤーに当たったら検知
Playerに
👉 Box Collider 2D
👉 Rigidbody 2D
を追加してない場合追加する
スクリプト追加
PlayerMoveにこれ追加👇
- void OnCollisionEnter2D(Collision2D collision)
- {
- if (collision.gameObject.name == "Enemy")
- {
- Debug.Log("当たった!");
- }
- }
- }
前回までのと合わせてこんな感じ
- public class PlayerMove : MonoBehaviour
- {
- public float speed = 5f;
- void Update()
- {
- float x = Input.GetAxis("Horizontal");
- float y = Input.GetAxis("Vertical");
- Vector3 move = new Vector3(x, y, 0);
- transform.position += move * speed * Time.deltaTime;
- float clampX = Mathf.Clamp(transform.position.x, -5f, 5f);
- float clampY = Mathf.Clamp(transform.position.y, -3f, 3f);
- transform.position = new Vector3(clampX, clampY, 0);
- }
- void OnCollisionEnter2D(Collision2D collision)
- {
- if (collision.gameObject.name == "enemy")
- {
- Debug.Log("当たった!");
- }
- }
- }
⑥ テスト
▶ 再生
👉 敵が左に動く
👉 当たるとログ出る
