[Unity Project] <ShootOut2D> 2D 슈팅 게임 만들기(8) 소행성 파괴 이펙트

2023. 8. 31. 16:55Unity

728x90
반응형

이전에 과정과 마찬가지로, explosion 애니메이션 적용을 위해 스프라이트 설정 후 애니메이션 빠르기를 조정한다.

 

 

Hit 애니메이션과 마찬가지로, 애니메이션 1번 재생 후 사라져야 하기 때문에 Hit에 쓰인 스크립트를 그대로 적용한다.

 

 


 

 

코드를 추가하여 ShootScript에서, 소행성이 사라진 지점에 explosion 애니메이션을 적용할 것이다.

 

 

public class ShootScript : MonoBehaviour
{
    public GameObject explosion;
    public GameObject gem;
    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 )
            {
                Instantiate(explosion, collision.transform.position, Quaternion.identity);
                Vector3 randomPosGem = new Vector3(Random.Range(-0.1f, 0.1f), Random.Range(-0.1f, 0.1f), 0);
                Instantiate(gem, transform.position + randomPosGem, Quaternion.identity);
                Destroy(collision.gameObject);
            }
            Destroy(gameObject);
        }
    }
}

public GameObject explosion;으로 explosion 프리팹을 가져오고, Instantiate에서 collision.transform.position으로 충돌하는 물체인 소행성의 위치값에 그대로 프리팹이 생성되게 하였다.

 

 

소행성이 파괴되고 파괴 이펙트가 없어지는 데에 딜레이가 생기는 것처럼 보이기 때문에 alpha 값이 0이 되도록 애니메이션을 수정하였다.

 

 

728x90
반응형