Mesh Renderer 에서
Cast Shadows : 조명을 받으면 그림자를 만든다 연산량 어마어마함
Receive Shadows : 그 만들어진 그림자를 받는다. 어마어마함
Use Light Probes, Reflection Probes : 연상량 어마어마함
※ 빈 프로젝트를 만들어서, 그곳에서 테스트후 본 프로젝트로 옮기는 방식을 취하자,
※ LeanTween :
LeanTween.move( 누가 , 어디로, 얼마동안 ). 어떻게 이동
LeanTween.roatate( 누가 , 어디로, 얼마동안 ). 어떻게 회전
LeanTween.scale 크기
ex ) LeanTween.move(gameObject, target, 5.0f).setEase(LeanTweenType.easeInOutExpo);
LeanTween.scale(gameObject, Vector3.one * 2, 1.0f).
setEase(LeanTweenType.easeInOutBack).setLoopPingPong(4);
최종 마지막 하나만 더있으면 되다. 바로 Value 에 대한 변화
valutTo
onstart : Tween 애니메이션이 시작할 때 호출할 함수
onupdate : Twee 이 진행되는 과정중에 매 프레임 호출할 함수
oncomplete : Tween 애니메이션끝나면 호출되는 함수
onXXXtarget : 호출된 함수를 들고 있는 GameObject
ignoretimescale : 이 옵션값이 true 로 설정되어있다면 Time.timeSclae 이 0이어도 TWEN 앤메이션을 재생하게함. FLASE 면 다 멈추면 자신도 멈춤
※ LeanTween 반환값은 LTDescr 이고 이걸로 받은다음에 이제 위의 onStart 등을
설정할수 있다.
LTDescr desc = LeanTween.rotate(gameObject, targetRotation, time).setEase(LeanTweenType.easeOutExpo);
LeanTween.scale(gameObject, Vector3.one, scaleTime).setEase(LeanTweenType.easeOutElastic);
desc.setOnStart(TweenStart);
desc.setOnUpdate(TweenUpdate);
desc.setOnComplete(TweenComplete);
※ 각각 실행될 함수들을 지정해주는것 일종의 Delegate로
Ontart,OnComplete 는 void 형 인자 없는 형태를,
Update 는 void 형태의 float 하나를 인자로 받는다.
}
}
void TweenStart()
{
Debug.Log("Start");
}
void TweenUpdate( float percentage)
{
Debug.Log("Update" + percentage );
}
void TweenComplete()
{
Debug.Log("Complete");
}
Value 어떻게 쓰는가 !
LTDescr desc = LeanTween.value(gameObject, 0.0f, 255.0f, 1.0f);
desc.setOnStart(TweenStart);
desc.setOnUpdate(TweenUpdate);
desc.setOnComplete(TweenComplete);
이렇게 하고 이제
void TweenUpdate( float value)
{
Debug.Log("Update" + value );
mat.color = Color.Lerp(Color.black, Color.green, value / 255.0f);
}
TweenUpdate 함수 가 저 변하는 value 값을 float로 받아온다. 이걸 사용하면 된다.
그래프 모여있는거 : http://robertpenner.com/easing/easing_demo.swf
전체 코드
using UnityEngine;
using System.Collections;
public class ScaleSample : MonoBehaviour {
Material mat;
void Start()
{
mat = gameObject.GetComponent<MeshRenderer>().material;
}
// Update is called once per frame
void Update ()
{
if (Input.GetButtonDown("Fire1"))
{
LeanTween.scale(gameObject, Vector3.one * 2, 1.0f).setEase(LeanTweenType.easeInOutBack).setLoopPingPong(4);
}
if (Input.GetButtonDown("Fire2"))
{
LeanTween.rotate(gameObject,new Vector3( 1080.0f,0,0), 2.0f).setEase(LeanTweenType.easeOutExpo);
// LeanTween.scale(gameObject, Vector3.one * 2, 1.0f).setEase(LeanTweenType.easeInOutBack).setLoopPingPong(4);
}
if (Input.GetKey(KeyCode.Q))
{
transform.eulerAngles = Vector3.zero;
transform.localScale = Vector3.zero;
Vector3 targetRotation = new Vector3(0.0f, 1080.0f, 0.0f);
float time = 3.0f;
float scaleTime = 1.5f;
//LTDescr desc = LeanTween.rotate(gameObject, targetRotation, time).setEase(LeanTweenType.easeOutExpo);
//LeanTween.scale(gameObject, Vector3.one, scaleTime).setEase(LeanTweenType.easeOutElastic) ;
LTDescr desc = LeanTween.value(gameObject, 0.0f, 255.0f, 1.0f);
desc.setOnStart(TweenStart);
desc.setOnUpdate(TweenUpdate);
desc.setOnComplete(TweenComplete);
}
}
void TweenStart()
{
gameObject.transform.localScale = Vector3.one;
Debug.Log("Start");
mat.color = Color.black;
}
void TweenUpdate( float value)
{
Debug.Log("Update" + value );
mat.color = Color.Lerp(Color.black, Color.green, value / 255.0f);
}
void TweenComplete()
{
Debug.Log("Complete");
}
}