Unity 3D Particle
유니티 3D에서 파티클을 사용하여 포탄이 목표물에 명중한 후 폭발하는 장면을 구현한 예
앞서 작성했던 포탄 발사 프로젝트를 다시 사용하여 포탄에 포함된 스크립트에 폭발 효과를 표현하기 위해 파티클 인스턴스를 동적으로 생성한다
파티클도 유니티에서는 GameObject 에 속하므로 public 변수로 선언한 후에 Inspector 뷰에서 드래그하여 할당하면 된다
CannonBall 프리팹에 다음과 같은 스크립트를 포함한다
#pragma strict
var explosionSound:AudioClip;
var explosionFlame :GameObject;
function Start () {
}
function Update () {
}
function OnCollisionEnter(collision:Collision) {
var hitName:String = collision.transform.name;
//print("충돌:"+hitName);
if(hitName=='Target') {
//충돌위치와 충동지점의 회전정보를 구한다
var contact:ContactPoint = collision.contacts[0];
var rotation = Quaternion.FromToRotation(Vector3.up, contact.normal);
var clone:GameObject = Instantiate(explosionFlame, contact.point, rotation);
var target:GameObject = gameObject.Find(hitName);
audio.PlayOneShot(explosionSound);
Destroy(target,0.5);
Destroy(gameObject,1); //목표에 명중한 포탄은 1초만에 사라진다
}else{
Destroy(rigidbody, 3); // 목표에 맞지않은 포탄은 사라지지 않고 3초후에 움직임을 멈춘다
}
}
Project 뷰에서 CannonBall 프리팹을 선택하고 Inspector 뷰에서 스크립트 섹션을 참고하여 스크립트에 선언된 explosionFlame 변수를 확인하고 아래 그림과 과 같이 Standard Assets > Particles > Legacy Particles > explosion 항목을 선택하여 Inspector 뷰의 변수 안으로 드래그하여 할당한다
위와 같은 절차로 포탄(CannonBall) 프리팹의 스크립트에 선언된 explosionFlame 변수에 Explosion Particle 을 할당할 수 있다
Play 모드로 테스트하면 다음과 같은 폭발효과를 확인할 수 있다