using UnityEngine;
using System.Collections;
public class LerpTest : MonoBehaviour {
//시작위치 끝 위치
public Transform startMarker;
public Transform endMarker;
public float speed = 10.0F;
private float startTime;
private float journeyLength;
void Start()
{
startTime = Time.time;
journeyLength = Vector3.Distance(startMarker.position, endMarker.position);//시작과끝 위치 거리
}
void Update()
{
//두점 사이의 거리가 10일때
float distCovered = (Time.time - startTime) * speed; //속력 v = m/s 1초에 10움직임 한프레임당 1움직인다고하면
float fracJourney = distCovered / journeyLength;// 속력 / 길이 = m/s / m = 1/s 시간 fracJourney = 0.1f
transform.position = Vector3.Lerp(startMarker.position, endMarker.position, fracJourney); //
}
}
유니티 함수 Lerp에 대해서 알아봅시다.
Lerp는 두 벡터 사이에 시간에 따른 위치를 구하는 함수입니다.
만약 startMarker position 은 (-5,0,0 )이고 endMarker 은 (5,0,0) 일때
위의 fracJourney 가 0.5초 일때 정확히 0,0,0 을 반환하게 되며, 0.1초 일때는 두점 사이의 거리가 10이므로 1,0,0 값을 반환 하게 됩니다.
fracJourncey 가 1.0f 일때나 그 이상일때는 endMarker 의 위치(5,0,0)를 반환합니다.
만약 0.0f이거나 그 이하일때는 startMarker의 위치(-5,0,0)를 반환하게 됩니다.
'잡다한것들전부 > 팁' 카테고리의 다른 글
| [펌] 유니티 엔진 팁 - 비동기 로딩 흉내내기 (0) | 2014.01.16 |
|---|---|
| [펌] 유니티 엔진 팁 - GUI시스템 (0) | 2014.01.16 |
| [함수] 유니티 함수 Vector3.Lerp에 대해서 알아보자. (0) | 2014.01.12 |
| 유니티 Vector3 를 상수 선언 하고 싶을때. (0) | 2014.01.09 |
| [펌][C# 강좌] 직접 만들어보는 메모리 풀 클래스 (0) | 2014.01.05 |
| 유니티 개발시 필요한 라이프 사이클 (0) | 2014.01.04 |


