플레이 존 뒤에 디스트로이 존을 생성했다. 해당 게임 오브젝트의 존재 이유는 과도한 에너미 생성으로 찾아 올 부하 예방과 플레이어의 죽음을 감지하여 게임을 종료시키기 위함이다.
1. 플레이어를 감지하면 유니티 플레이 종료
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DestroyZone : MonoBehaviour
{
private void OnTriggerEnter(Collider other)
{
if (other.gameObject.name.Equals("Player")) {
Debug.Log("Goodbye Player..");
UnityEditor.EditorApplication.isPlaying = false; // 쓰면 안 됨
}
}
}
DestroyZone에 떨어지는 적과 플레이어를 감지하여 점수를 올리거나 게임을 멈추는 로직을 작성중이다. 사실 게임을 멈추는건 디스트로이 존에서 하면 안 될거 같고 트리거의 결과를 게임 메니저로 보내서 처리를 해야할 거 같은데 그건 리팩토링 시간에 강사님에게 울면서 여쭤보기로 하고 일단 급한대로 만들어보겠다.
트리거는 말 그대로 방아쇠다. 방아쇠가 당겨지면 총알이 발사되듯 트리거가 눌려지면 (우리가 설정한) 어떠한 사건이 발생하는 것이다.
OnTriggerEnter를 사용해서 디스트로이존에 닿는 순간(Enter) 디스트로이존에 닿은 게임 오브젝트의 정보가 변수 other에 담기게된다.
OnTriggerEnter 메서드의 if문의 other.gameObject.name.Equals("Plyaer")로 other에 저장된 게임 오브젝트의 이름이 Player라는 이름인지 판별하고 참이라면 UnityEditor를 사용해서 플레이 자체를 종료했다. (이거는 일단 발표 구색을 맞춰야 하지만 애니메이션을 배우지 못한 수강생의 처절한 짱돌 굴리기의 결과다)
멘토님께서는 UnityEditor는 절대 코드에서 사용하면 안된다고 하셨다. 유니티 에디터는 실제 유니티 창에서만 이뤄지는 활동이고 스크립트를 적어버리면 못쓰는 코드가 된다고 한다.
'동식이 취업시키기 작전' 카테고리의 다른 글
[백준] 10866 덱(c#) (0) | 2024.01.22 |
---|---|
[융합 프로젝트] 포톤 입장한 플레이어 닉네임 가져오기, 플레이어가 입장하면 알림해주기, 입장한 플레이어 UI로 나타내기(실패ㅠㅠ) (1) | 2023.11.11 |
[Unity Project] 프리팹을 게임오브젝트로 변환하기(feat. 해당하는 식재료 위에 아이콘 배치하기) (0) | 2023.08.13 |