우리는 이렇게 시작 지점과 끝 지점을 알면
그 중간의 지점들을 대략적으로 알 수 있습니다.
정확하게 알기 위해서는
70%의 위치를 알려면 최대치에서 0.7을 곱하면 되고
50%의 위치를 알려면 최대치에서 0.5를 곱하면 됩니다(혹은 나누기 2)
그런데
이런 경우라면 중간 위치를 어떻게 알 수 있을까요?
((27-3)*0.5)+3
이런 계산식을 통해 우리는 중간의 위치를 알 수 있습니다.
이렇게
양 끝의 위치를 알고 있을때 그 사이의 원하는 위치를 알아내는 것을 Lerp(선형 보간)
이라고 합니다
이렇게 두개의 object를 준비해준뒤 스크립트를 최상위 부모에 컴포넌트 합니다.
using UnityEngine;
public class LerpExample1 : MonoBehaviour
{
[SerializeField][Range(0f, 1f)]
private float ratio = 0f;
private Transform originTr = null;
private Transform targetTr = null;
Vector3 startPos;
Vector3 endPos;
private void Awake()
{
Transform[] trs = GetComponentsInChildren<Transform>();
//GetComponentsInChildren : 해당 컴포넌트를 가진 오브젝트를 모두 가져옴,
//제일 처음(0)에 들어오는 것은 최상위 부모이며 그 아래 자식순으로 들어오게 됨
originTr = trs[1];
targetTr = trs[2];
}
private void Start()
{
startPos = originTr.position;//시작&추격 object의 위치를 startPos 에
endPos = targetTr.position;//타겟 object의 위치를 endPos 에
}
private void Update()
{
//Lerp : Linear Interpolation
float lerp = Mathf.Lerp(0f, 1f, 0.7f); //Lerp(시작지점, 끝지점, 구하기 원하는 지점)
Vector3 lerpPos = Vector3.Lerp(startPos, endPos, ratio);
originTr.position = lerpPos; //원하는 지점까지 추격 object를 이동
}
}
이제 ratio 수치에 따라 originTr이 원하는 위치로 이동하는 것을 확인 할 수 있습니다
'Unity' 카테고리의 다른 글
UI - Canvas (0) | 2024.10.18 |
---|---|
Texture (1) | 2024.10.07 |
Coroutine(코루틴) (0) | 2024.09.30 |
Prefab (0) | 2024.09.24 |
Collision(충돌) (0) | 2024.09.23 |