본문 바로가기

unity3d

Trail Renderer 사용하여 Fruit Ninja의 Sword 효과 내기

Fruit Ninja 를 플레이 해 보시면, 손가락을 사용해 터치 디바이스에 드래그를 하면 칼날을 휘두른 것 같은 효과가 납니다. 물론, Fruit Ninja 뿐만 아니라 많은 스마트폰 디바이스용 어플에서 볼 수 있는 효과입니다. 이것을 어떻게 구현할까 싶어 알아보니, Trail Renderer 를 사용하면 쉽게 구현이 가능하더군요. (Sword 효과라고 명명 된 것은 아니고, 정확히 어떤 명칭을 붙여야 하는지 모르겠어서 그냥 Sword 효과라고 이름을 붙였습니다.)

 

TrailRenderer 는 Unity3D Document 에서 이렇게 설명합니다.

 

"The Trail Renderer is used to make trails behind objects in the scene as they move about."

 

Scene 내에서 GameObject 가 이동 시, 이동한 흔적(Trail)을 남기고자 할 때 사용되는 것이죠.

 

그럼, Sword 효과를 내기 위해 Trail Renderer 를 어떻게 사용하면 될까요?

방법은 아주 간단합니다.

 

1. GameObject 를 두고, Trail Renderer 컴포넌트를 추가

  - Hierarchy 에 Empty GameObject 를 추가. (TrailObject 라고 이름을 변경 했습니다.)

  - 추가 된 GameObject 를 선택하고 Trail Renderer 컴포넌트 추가 (Component - Effects - Trail Renderer) 

 

  - Trail Renderer 컴포넌트의 속성 설정. 

저는 간단히 Material 을 Unity에서 제공하는 Fire Smoke 로 설정하고, Start Width, End Width 만 살짝 바꿔봤습니다. (입맛에 맞게 설정하시면 됩니다.)

 

 

2. Input 클래스를 사용하여 Move 발생 시 마다 GameObject 의 Transform 을 변경

  - Scene 에서 발생하는 이벤트를 처리하기 위한 Script 를 추가. (mainSceneScript.cs)

    + Trail Renderer 컴포넌트가 추가 된 GameObject 를 할당 할 변수 추가

public GameObject TrailObject;

 

    + Inspector 에서 변수 할당 

(MainCamera 도 변수 선언을 해서 할당 했습니다.)

 

 

  - Script 에 터치 이벤트 처리하여 Move 발생 시에 GameObject 의 Transform 변경.

TrailObject.transform.position =
    MainCamera.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, 1));

 

 

결과 화면 

 

 

 

요약.

1. GameObject 를 두고, Trail Renderer 컴포넌트를 추가.

2. Input 클래스를 사용하여 Move 발생 시 마다 GameObject 의 Transform 을 변경.