유니티 3D 에서 텍스쳐 애니메이션 구현 예제
애니메이션을 구현할 때 게임 오브젝트를 이동하거나 게임 오브젝트는 고정하고 주변 텍스쳐 이미지를 이동하는 방법을 사용할 수 있다.
여기서는 유니티를 사용하여 텍스쳐를 이동하여 애니메이션을 효과를 내는 예제를 작성하려고 한다
비행기가 활주로 달리는 애니메이션을 구현할 때 텍스쳐 애니메이션 기법을 적용해 볼 것이다.
여기서 사용된 비행기 모델은 TF3DM 사이트에서 다운로드할 수 있다.
http://tf3dm.com/download-page.php?url=us-a-10-thunderbolt-58817
Project 뷰의 Assets 폴더 아래에 A10 폴더를 생성하고 그 안에 Tex 폴더를 생성하고 Tex 폴더 안에 비행기 모델에 포함된 모든 텍스쳐 이미지를 임포트한다
이어서 A10 폴더 안으로 비행기 모델을 임포트하면 다음과 같은 장면을 확인할 수 있다
임포트된 비행기 모델에 텍스쳐가 적용되지 않았기 때문에 수동으로 텍스쳐를 적용해야 한다. Hierarchy 뷰에서 비행기 모델의 삼각형 아이콘을 눌러 하위 메시들을 나열하고 Project 뷰의 Tex 폴더를 선택하여 텍스쳐 파일명이 우측에 나열되도록 설정한다 (아래 그림 참조)
위와 같이 메시의 이름과 텍스쳐의 이름이 동일한 것끼리 연결해주면 텍스쳐를 적용할 수 있다.
Hierarchy 뷰의 하위 메시들을 위에서 부터 순서대로 마우스로 선택해 가면서 텍스쳐를 Inspector 뷰나 Scene 뷰의 선택된 메시로 드래그하여 메시에 텍스쳐를 매핑하면 된다
위의 결과로 매핑된 텍스쳐는 다음과 같다
위와 같은 방법으로 텍스쳐를 가진 모드 메시에 텍스쳐를 적용할 수 있다. 모든 텍스쳐를 적용한 결과는 다음과 같다
이제 활주로를 생성할 순서이다
GameObject > Create Other > Plane 선택
이렇게 생성된 평면 오브젝트에 활주로 텍스쳐 이미지를 적용하려고 한다
Hierarchy 뷰에서 Plane 선택하고 Inspector 뷰의 Material 설정 란을 보면 재질이 설정되지 않은 상태이므로 먼저 재질을 생성하여 설정해 놓고 그 재질에 활주로 텍스쳐 이미지를 설정해 주면 된다
위의 그림에서 Inspector 뷰의 Materials 란을 클릭해 보면 활주로로 사용할 재질은 없기 때문에 Material 을 새로 생성하여 이곳에 배정하는 일을 우선적으로 해야 한다
아래 그림처럼 재질이 생성되었고 그 이름을 Runway Material 이라고 설정했다. Inspector 뷰에서는 생성된 재질에 텍스쳐를 적용할 수 있다.
활주로 텍스쳐로 사용할 이미지를 구해서 현재 프로젝트로 임포트하고 Inspector 뷰로 드래그하여 재질에 텍스쳐를 배정한다
Hierarchy 뷰에서 Plane 를 선택하고 앞서 생성된 Material을 Project 뷰로부터 드래그하여 Inspector 뷰의 Material 란에 배정한다
재질(Material )이 설정된 Plane 오브젝트는 위에서 내려다 보면 다음과 같은 모습이다
평면(Plane) 오브젝트에 텍스쳐가 적용되었으니 비행기는 제자리에 있도록 하고 텍스쳐의 위치를 아래쪽으로 스크롤하면 마치 비행기가 활주로 상에서 전진하는 듯한 애니메이션을 구현할 수 있다
다음과 같은 스크립트를 작성하고 평면 오브젝트(Plane, 활주로)에 포함시킨 후 2개의 public 변수의 값을 Inspector 뷰에서 할당한다
#pragma strict
var uSpeed:float;
var vSpeed:float;
function Start () {
}
function Update () {
var uPos :float = Time.time * uSpeed;
var vPos :float = Time.time * vSpeed;
renderer.material.SetTextureOffset('_MainTex',Vector2(uPos ,-vPos ));
}
아래와 같이 설정을 마친 후에 Play 모드로 테스트해보면 활주로 텍스쳐가 아래쪽(-Z)으로 이동하기 때문에 비행기가 전진하는 것과 같은 애니메이션이 완성된다