오늘 프로젝트에서 확인한 것
플레이어가 날아오는 총알을 충돌했을 때 플레이어가 발사한 총에 적이 맞으면 "플레이어 죽음"이라는 콘솔 메세지가 나오게 걸어놨다.
public class Player : Character
{
...
protected override void OnTriggerEnter2D(Collider2D collision)
{
base.OnTriggerEnter2D(collision);
if (collision.gameObject.layer == 8) //EnemyBullet
{
Debug.Log("플레이어 죽음");
Dead();
}
}
}
플레이어가 총알에 맞으면 작용하는 함수내부
여기서 if문을 보면 collision.gameObject.layer은 int형으로 받아서 값을 비교하는데 왜 8이랑 같으면 수행시키는 이유는
에디터에서 총알 레이어를 다음과 같이 설정했다.
플레이어가 발사하는 총알과 랜덤위치에서 날아오는 총알이 다르기 때문에 레이어를 따로 설정하였다. (물론 태그로 해도 무방하지만)
그리고 생성할 적을 맞히면 적은 그자리에서 파괴를 해야 하는데 구현은 간단하다.
protected override void OnTriggerEnter2D(Collider2D collision)
{
base.OnTriggerEnter2D(collision);
if(collision.CompareTag("Bullet"))
Debug.Log("격파");
}
Enemy클래스 안에 넣으면 적용이 된다.
그리고 메서드 이름이 OnTriggerEnter2D라는 함수를 사용한 이유는 총알 프리팹의 collider안에 Is Trigger가 체크되어 있어서 적용을 한 것이다
만약에 OnTriggerEnter대신에 OnColliderEnter로 대체하고 Is Trigger가 체크되지 않았더라면 총알이 적이랑 부딪힐 때 그자리에서 튕겨 나갔을 것이다.
by 스파르타 코딩클럽
'개발 TIL' 카테고리의 다른 글
5/23 부트캠프 개발 TIL (Raycast) (0) | 2024.05.23 |
---|---|
5/22 부트캠프 개발 TIL (코루틴과 콜라이더) (0) | 2024.05.22 |
5/20 부트캠프 개발 TIL (InputSystem 2인용) (0) | 2024.05.20 |
5/17 부트캠프 개발 TIL (결합도와 응집도) (0) | 2024.05.17 |
5/16 부트캠프 개발 TIL (UML 다이어그램) (0) | 2024.05.16 |