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에도 스스로 하는 것을 해봅시다.

results matching ""

    No results matching ""