8일차 - 총알에 맞으면 폭발하기
이제 총알에 맞으면 폭발하는 것을 해볼건데요.
레이저 프리펩에 아직 RigidBody2D와 BoxCollider2D가 없다면 추가해줍시다. 그리고 RigidBody2D엔 isKinematic을, BoxCollider2D에는 isTrigger를 체크해줍시다.
public GameObject ParticleFXExplosion;
그리고 멤버변수를 하나 체크해준 뒤, 유니티 에디터에서 폭발 파티클 프리펩을 끌어다 놓아서 등록해 줍시다.
void OnTriggerEnter2D(Collider2D other)
{
if(other.tag.Equals("Enemy")){ //부딪힌 객체가 적인지 검사합니다.
Destroy(other.gameObject); //부딪힌 적을 지웁니다.
Destroy(this.gameObject); //자기 자신을 지웁니다.
Instantiate(ParticleFXExplosion, this.transform.position, Quaternion.identity); //폭발 이펙트를 생성합니다.
}
}
그리고 총알이 화면 밖으로 나가면 삭제하도록 해야합니다. 만약 그렇지 않다면 Laser 객체는 Hierachy뷰에 쌓이기 시작해서 메모리가 감당하기 힘들정도로 쌓이게 될 것입니다.
그렇다면 화면밖으로 나가면 사라지도록 관리를 해줄것인데.
유니티에는 void OnBecameInvisible() 라는 이벤트가 있는데, 화면밖으로 안보이게되면 호출되는 함수 입니다.
void OnBecameInvisible()
{
Destroy(this.gameObject);// 자기 자신을 지웁니다.
}
를 laser.cs에 등록해서 화면밖으로 나오면 지워지도록 관리 해줍시다.
Enemy에도 등록하면 큰 도움이 되겠죠? Enemy에도 스스로 하는 것을 해봅시다.