골인 지점에 도착했을때와 게임오버시의 충돌처리를 작성합니다.
gameState라는 게임 상태를 나타내는 정적변수를 선언해서
player가 죽었을때는 "gameover", Goal에 도착했을대는 "gameclear"상태가 되어
각 이벤트호출시 gameState가 "playing"상태가 아니면 처리하지 않게해서 플레이어를 멈추게 합니다.
보통의 게임오브젝트(인스턴스)는 씬이 바뀔경우 없어지게 되는데 gameState는 정적변수라 씬이 바뀌어도 게임 전체에 계속 남아 있을 수 있다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour{
~생략~
public static string gameState = "playing"; //게임중
~생략~
void Start(){
~생략~
gameState = "playing";
}
// Update is called once per frame
void Update(){
if(gameState != "playing") {
return;
}
~생략~
}
private void FixedUpdate() {
if(gameState != "playing") {
return;
}
~생략~
}
public void Jump() {
~생략~
}
private void OnTriggerEnter2D(Collider2D collision) {
~생략~
}
public void Goal() {
~생략~
gameState = "gameClear";
GameStop(); //게임중지;
}
public void GameOver() {
~생략~
gameState = "gameOver";
GameStop(); //게임중지
GetComponent<CapsuleCollider2D>().enabled = false; //플레이어 판정 비활성화
rbody.AddForce(new Vector2(0, 5), ForceMode2D.Impulse); //한번 튕겨줍니다.
}
void GameStop() {
Rigidbody2D rbody = GetComponent<Rigidbody2D>();
rbody.velocity = Vector2.zero;
}
}
'유니티2D게임 > 사이드뷰 게임의 기본 시스템' 카테고리의 다른 글
애니메이션을 위한 추가 스크립트 작성 (0) | 2023.05.13 |
---|---|
점프 애니메이션 만들기 (0) | 2023.05.13 |
플레이어 캐릭터의 애니메이션 만들기 (0) | 2023.05.13 |
점프 동작 조정하기 (0) | 2023.05.13 |
[사이드뷰게임] 4.5 플레이어 캐릭터 만들기 (0) | 2023.05.13 |