이 글은 Unity Object 이동 및 회전과 애니메이션의 속도 조절하는 Tip을 설명합니다.



1. 우선 움직일 Object(돌고래)를 아래 링크로 다운을 받습니다.

      다운 링크 : https://www.assetstore.unity3d.com/kr/#!/content/3547 

      그후 import를 하여 예제 프로젝트에 추가합니다.

      정상적으로 import를 하였다면 Project Tab -> Favorites -> All Models에 돌고래가 보일 겁니다.

    




2. 돌고래를 이동 시키기 위한 Object를 추가하고, 그 안에 돌고래를 넣습니다.





3. 돌고래를 이동 및 회전 시키기 위한 자바스크립트 파일 생성


      돌고래 이동은 transform.position의 인자인 x, y, z값을 가지고 제어 합니다.

      돌고래 회전은 GameObject.Find("우리가 추가한 Object 명").transform.Rotate(Vector3(X, Y, Z) * speed * Time.deltaTime); X, Y, Z 값을 가지고 원하는 방향으로 회전 시킵니다.

      

      // File Name : Move.js


function Start() {
}

var speed : float = 1;
var max : int = 0;
var rateValue : int = 80;

function Update () {
    max = max + 1
    
    if (max < 200) {
        transform.position.x += (0.24 / rateValue);
        transform.position.y -= (0.17 / rateValue);
        rateValue = 80;
    } else if (max < 400) {
        transform.position.x += (0.24 / rateValue);
        transform.position.y -= (0.17 / rateValue);
        rateValue = 60;
    } else if (max < 500) {
        transform.position.x += (0.24 / rateValue);
        transform.position.y -= (0.17 / rateValue);
        rateValue = 35;
    } else if (max < 900) {
        transform.position.x += (0.08 / rateValue);
        transform.position.y -= (0.13 / rateValue);
        GameObject.Find("Object").transform.Rotate(Vector3(10, -50, -10) * speed * Time.deltaTime);
        rateValue = 20;
    } else {
        transform.position.x += (0.34 / rateValue);
        transform.position.y -= (0.17 / rateValue);
    }
    
    if (max > 1500) {  // 초기 상태로 Roll Back Source Code
        GameObject.Find("Object").transform.position = new Vector3(-5.52.5, -5);
        GameObject.Find("Object").transform.localEulerAngles = new Vector3(3303100);
        max = 0;
    }
}



4. 위에서 만든 자바스크립트 파일을 Object의 Component에 Drag하여 추가 합니다.

    - Object의 Position(x, y, z)를 설정하여 초기 시작 위치를 설정

    - Object의 Rotation(x, y, z)를 설정하여 초기 시작 방향 설정





5. 이제 돌고래의 애니메이션 속도, 크기를 설정 합니다.


 - "humpback_whale_model_baked_animation"의 'Scale'값으로 초기 시작할때 돌고래 크기를 설정 합니다. 

   저는 처음에 조금하게 보여야 하기에 0.1로 설정 하였습니다.




 - 위 그림과 같이 'DolphinMove' 자바스크립트 파일로 애니메이션 속도 및 돌고래 크기를 조절 합니다.

   현재 사용하고 있는 애니메이션을 Get하여 속도를 '7'로 설정 하였습니다.

   'max'값이 1500이 되기 전까지 'scale'값을 계속 0.0006씩 상승 시켜서 점점 커지게 하였습니다.

   

               // File Name : DolphinMove.js


#pragma strict
var animAnimation;
function Start () {
    for (var state : AnimationState in anim) {
        state.speed = 7;
    }
}
var max : int = 0;
function Update () {
     max += 1;
     if (max < 1500) {
        transform.localScale.x += 0.0006;
        transform.localScale.y += 0.0006;
        transform.localScale.z += 0.0006;
    }
    
    if (max > 1500) {
        transform.localScale.x = 0.1;
        transform.localScale.y = 0.1;
        transform.localScale.z = 0.1;
        max = 0;
    }

}



이상


'Unity' 카테고리의 다른 글

[Unity] Chromakey 동영상 투명하게 플레이 하는 Tip  (192) 2015.05.28

유니티에서 동영상 배경을 투명하게 처리하는 방법은 Shader를 이용해서 합니다.

Shader란 정의를 찾아보았으나 없었고,

제가 생각하기에 Shader란 자바스크립트 계열의 일종으로 보입니다.(제 생각)

우선 Shader를 알고 있다는 상황으로 알고 설명 드립니다.


1. Create -> Plane 추가


2. Project 탭에서 마우스 우클릭 ->  Create       


가. Movie Play C# 파일 생성

using UnityEngine;

using System.Collections;

public class ChromakeyMovie : MonoBehaviour {

    public MovieTexture movie;

    void Start () {

        renderer.material.mainTexture = movie as MovieTexture;

        movie.Play ();

        movie.loop = true;

    }

    void Update () {   

    }

}


나. Shader 파일 생성 (배경이 검정색 일때 가정하에 구현되어 있음, 검정색이 아닐경우 "Chroma"의 Color RGB 값을 변경하면 됩니다.) 

Shader "Transparent/Cutout/ChromakeyShader" {
    Properties {
         _MainTex ("Base (RGB)"2D) = "white" {}
         _Sens ("Sensibilidad"Range (0,0.1)) = 0.3
         _Cutoff("Cutoff"Range(00.05)) = 0.1
         _Color ("Chroma"Color) = (000)
    }
    
    SubShader {
        Tags { "Queue"="Transparent" "RenderType"="Transparent" }
        LOD 200
        
        CGPROGRAM
        #pragma surface surf Lambert alpha

        sampler2D _MainTex;
        float _Cutoff;
        float _Sens;
        half3 _Color;


        struct Input {
            float2 uv_MainTex;
        };

        void surf (Input INinout SurfaceOutput o) {
            half4 c = tex2D (_MainTexIN.uv_MainTex);
            o.Albedo = c.rgb;
            
            float aR = abs(c.r - _Color.r) < _Sens ? abs(c.r - _Color.r) : 1;
            float aG = abs(c.g - _Color.g) < _Sens ? abs(c.g - _Color.g) : 1;
            float aB = abs(c.b - _Color.b) < _Sens ? abs(c.b - _Color.b) : 1

            float a = (aR + aG + aB) / 3

            if (a < _Cutoff) {
                o.Alpha = 0;
            } else {
                o.Alpha = 1;
            }
        }
        ENDCG
    }
    FallBack "Diffuse"
}


3. 1번에서 추가한 Plane을 클릭하여 우리가 생성한 C#파일을 "Add Component"에 Drag하여 추가, Shader도 설정하면 Shader 설정 완료  



# 추가적인 내용

모바일로 재생하고 하고자 하면, 유니티에서 제공 해주는 "MovieTexture"로 재생이 불가합니다. 폰트도 필요하면 Bitmap Font를 다운 받야아 합니다.

유료로 AssetStore에서 다운을 받아야 하는데, 동영상을 10초 가량만 하고 싶으시면 Asset Store에서  "SPlugins MovieTexture for Mobile Free"를 다운 받아서 import하여 C#으로 만든 파일을 대치하면 됩니다.

(다운 링크 : https://www.assetstore.unity3d.com/kr/#!/content/32877 )

단, Shader에 동영상을 Drag 한 것은 삭제 Play가 됩니다. 


이상 


+ Recent posts