게임 개발/유니티
Vector3.Slerp
FlowTree
2020. 4. 14. 16:15
반응형
두 벡터 사이를 구형보간한다. 이 기능을 이용해서 포물선 이동하는 발사체를 구현했다.
해당 스크립트를 발사체에 할당하고, 시작 위치와 종료 위치를 할당하면 발사체가 포물선 이동한다.
예문
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Sunrise : MonoBehaviour
{
public Transform sunrise; //포물선 시작위치
public Transform sunset; //포물선 종료위치
public float journeyTime = 1.0F; //시작위치에서 종료위치까지 도달하는 시간, 값이 높을수록 느리게 간다.
private float startTime;
public float reduceHeight = 1f; //Center값을 줄이기, 해당 값이 높을수록 포물선의 높이는 낮아진다.
void Start()
{
startTime = Time.time;
}
void Update()
{
Vector3 center = (sunrise.position + sunset.position) * 0.5F; //Center 값만큼 위로 올라간다.
center -= new Vector3(0, 1f * reduceHeight, 0); //y값을 높이면 높이가 낮아진다.
Vector3 riseRelCenter = sunrise.position - center;
Vector3 setRelCenter = sunset.position - center;
float fracComplete = (Time.time - startTime) / journeyTime;
transform.position = Vector3.Slerp(riseRelCenter, setRelCenter, fracComplete);
transform.position += center;
}
}
참고링크
https://docs.unity3d.com/kr/530/ScriptReference/Vector3.Slerp.html
반응형