初心者のためのUnity講座! サイドビューアクションゲームの作り方 ゲームオーバーとゲームクリア時にTextを表示する方法の巻
みなさんこんにちはスタジオしまづの嶋津です。
前回までで、ゲームオーバーとゲームクリアの判定の実装ができました。
今回は、ゲームオーバーとゲームクリア時にテキストを表示する方法を紹介します。
youtu.be (役に立ったという方はチャンネル登録していただけると嬉しいです^^)
コードは以下のようになります。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerMovement : MonoBehaviour { [SerializeField] GameManager gameManager; [SerializeField] LayerMask blockLayer; Rigidbody2D rigidbody2D; float speed = 0; // Jump float jumpPower = 400; public enum MOVE_DIRECTION { STOP, LEFT, RIGHT, } MOVE_DIRECTION moveDirection = MOVE_DIRECTION.STOP; void Start() { rigidbody2D = GetComponent<Rigidbody2D>(); } void Update() { float x = Input.GetAxis("Horizontal"); if (x==0) { // 止まる moveDirection = MOVE_DIRECTION.STOP; } else if (x>0) { // 右に移動 moveDirection = MOVE_DIRECTION.RIGHT; } else if (x < 0) { // 左に移動 moveDirection = MOVE_DIRECTION.LEFT; } if (IsGround() && Input.GetKeyDown("space")) { Jump(); } } private void FixedUpdate() { switch (moveDirection) { case MOVE_DIRECTION.STOP: speed=0; break; case MOVE_DIRECTION.LEFT: speed= -3; break; case MOVE_DIRECTION.RIGHT: speed= 3; break; } rigidbody2D.velocity = new Vector2(speed, rigidbody2D.velocity.y); } void Jump() { rigidbody2D.AddForce(Vector2.up * jumpPower); } bool IsGround() { return Physics2D.Linecast(transform.position-transform.right*0.3f, transform.position - transform.up * 0.1f, blockLayer) || Physics2D.Linecast(transform.position + transform.right * 0.3f, transform.position - transform.up * 0.1f, blockLayer); } private void OnTriggerEnter2D(Collider2D collision) { if (collision.gameObject.tag == "Trap") { gameManager.GameOver(); } if (collision.gameObject.tag == "Finish") { gameManager.GameClear(); } } }
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class GameManager : MonoBehaviour { [SerializeField] GameObject gameOverTextObj; [SerializeField] GameObject gameClearTextObj; public void GameOver() { gameOverTextObj.SetActive(true); } public void GameClear() { gameClearTextObj.SetActive(true); } }
次の動画でゲームオーバーになったときにリスタートする方法を紹介します。
スタジオしまづから
ゲームをリリースしたい人向けのUnity講座を動画販売しています。c#の基礎からリリースまで体系的に学びたい方はぜひ。
https://www.udemy.com/studio_shimazu_nfrpg/?couponCode=FREE_FIRST
また、一人でゲームを作るのは難しいという方はゲームリリースを目的とするオンラインサロンもやっているのでよければどうぞ!話だけでもという方はTwitterのDMだけでもOKです^^ camp-fire.jp