[Unity Project] <ShootOut2D> 2D 슈팅 게임 만들기(6) Hit 이펙트 추가

2023. 8. 31. 14:47Unity

728x90
반응형

미사일이 소행성에 맞으면 그에 맞는 이펙트가 생겨야 한다.

 

 

Hit 스프라이트를 알맞게 설정한 후 한꺼번에 Hierarchy 창으로 끌어서 애니메이션을 만든다.

 

 

애니메이션을 만든 경로에 Hit 애니메이션 클립이 있는데, 한 번 부딪힐 때 한 번만 이펙트가 생격야하므로 Loop Time을 체크 해제해야 한다.

 

 

해당 애니메이션 클립을 더블 클릭하여 Animation 창을 띄운 후 Hierarchy 창에서 hit1 스프라이트를 눌러 애니메이션을 재생해 보면 반복되는 것을 볼 수 있다. 한 번 반짝이고 서서히 사라지도록 애니메이션을 수정해야 한다.

 

 

Add Property로 color를 추가하여 6프레임까지 Color.a 알파 값이 1을 유지하다가 8프레임에서 0을 만들어 사라지게 하였고, Sprite 부분을 확장시키면 원하는 스프라이트를 원하는 프레임으로 드래그해서 옮길 수 있다.

 

 

Show Sample Rate을 활성화하면 Samples 숫자를 수정하는 것으로 애니메이션의 빠르기를 조절할 수 있다.

 

 

원하는 애니메이션이 만들어졌다면 프리팹으로 만든다.

 

 


 

 

이제 스크립트에서 해당 Hit 애니메이션을 불러오는 기능을 추가해야 한다.

 

 

public class ShootScript : MonoBehaviour
{
    public GameObject hitEffect;
    public float speed = 10;

    void Update()
    {
        transform.position += Vector3.right * Time.deltaTime * speed;
    }
    void OnBecameInvisible()
    {
        Destroy(gameObject);
    }

    void OnTriggerEnter2D(Collider2D collision)
    {
        print(collision.tag);
        if(collision.tag == "Asteroid")
        {
            AsteroidScript asteroidScript = collision.gameObject.GetComponent<AsteroidScript>();
            asteroidScript.hp -= 3;
            Instantiate(hitEffect, transform.position, Quaternion.identity);
            if(asteroidScript.hp <= 0 )
            {
                Destroy(collision.gameObject);
            }
            Destroy(gameObject);
        }
    }
}

public GameObject로 만들었던 Hit 애니메이션을 적용하였고, Instantiate으로 부딪히는 그 자리에 애니메이션을 생성한다.

 

 

잘 작동한다.

 

 

하지만 Hierarchy상에 여전히 이펙트가 남아있으므로 지워야 한다.

 

 

간단하게 hit 프리팹에 다음과 같은 스크립트를 추가하면 된다. 시간이 지나면 Destroy 된다.

public class DisappearHit : MonoBehaviour
{
    public float time = 1.0f;

    void Start()
    {
        Destroy(gameObject, time);
    }
}
728x90
반응형