2023. 8. 31. 14:47ㆍUnity
미사일이 소행성에 맞으면 그에 맞는 이펙트가 생겨야 한다.
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);
}
}
'Unity' 카테고리의 다른 글
[Unity Project] <ShootOut2D> 2D 슈팅 게임 만들기(8) 소행성 파괴 이펙트 (0) | 2023.08.31 |
---|---|
[Unity Project] <ShootOut2D> 2D 슈팅 게임 만들기(7) 젬 생성 (0) | 2023.08.31 |
[Unity Project] <ShootOut2D> 2D 슈팅 게임 만들기(5) 소행성 추가 (0) | 2023.08.31 |
[Unity] Euler 회전과 Quaternion 회전 (0) | 2023.08.28 |
[Unity Project] <ShootOut2D> 2D 슈팅 게임 만들기(4) 미사일 발사 (0) | 2023.08.28 |