初心者のためのUnity講座! 敵キャラの鼻先に判定をつけたら崖から落ちなくなったよの巻 サイドビューアクションゲームの作り方編
みなさんこんにちはスタジオしまづの嶋津です。
前回
敵キャラが地面を歩き回る実装ができました。 simanezumi1989.hatenablog.com
今回
敵キャラが崖に落ちないように地面との判定について紹介します。
(役に立ったという方はチャンネル登録していただけると嬉しいです^^)
コードは以下のようになります。
using UnityEngine; public class EnemyManager : MonoBehaviour { // [SerializeField] GameManager gameManager; [SerializeField] LayerMask blockLayer; Rigidbody2D rigidbody2D; float speed = 0; public enum MOVE_DIRECTION { STOP, LEFT, RIGHT, } MOVE_DIRECTION moveDirection = MOVE_DIRECTION.RIGHT; void Start() { rigidbody2D = GetComponent<Rigidbody2D>(); } void Update() { if (!IsGround()) { // 向きを変える ChangeDirection(); } } private void FixedUpdate() { switch (moveDirection) { case MOVE_DIRECTION.STOP: speed = 0; break; case MOVE_DIRECTION.LEFT: transform.localScale = new Vector3(-1, 1, 1); speed = -3; break; case MOVE_DIRECTION.RIGHT: transform.localScale = new Vector3(1, 1, 1); speed = 3; break; } rigidbody2D.velocity = new Vector2(speed, rigidbody2D.velocity.y); } bool IsGround() { Vector3 startVec = transform.position + transform.right * 0.5f* transform.localScale.x; Vector3 endVec = startVec - transform.up * 0.5f; Debug.DrawLine(startVec, endVec); return Physics2D.Linecast(startVec, endVec, blockLayer); } void ChangeDirection() { if (moveDirection == MOVE_DIRECTION.RIGHT) { // 左に移動 moveDirection = MOVE_DIRECTION.LEFT; } else { // 右に移動 moveDirection = MOVE_DIRECTION.RIGHT; } } }
次の動画では敵キャラへの攻撃&敵キャラからの攻撃を実装します。
スタジオしまづから
ゲームをリリースしたい人向けのUnity講座を動画販売しています。c#の基礎からリリースまで体系的に学びたい方はぜひ。
https://www.udemy.com/studio_shimazu_nfrpg/?couponCode=FREE_FIRST
また、一人でゲームを作るのは難しいという方はゲームリリースを目的とするオンラインサロンもやっているのでよければどうぞ!話だけでもという方はTwitterのDMだけでもOKです^^
camp-fire.jp