Unity3D/Particles

Unity 3D Particle

Soul-Learner 2014. 3. 10. 19:36

유니티 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 모드로 테스트하면 다음과 같은 폭발효과를 확인할 수 있다