본문 바로가기
게임 개발/유니티

Vector3.Slerp

by FlowTree 2020. 4. 14.
반응형

두 벡터 사이를 구형보간한다. 이 기능을 이용해서 포물선 이동하는 발사체를 구현했다.

해당 스크립트를 발사체에 할당하고, 시작 위치와 종료 위치를 할당하면 발사체가 포물선 이동한다.

 

 

예문

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

반응형

'게임 개발 > 유니티' 카테고리의 다른 글

Mathf.SmoothStep  (0) 2020.04.29
Vector3.Lerp  (0) 2020.04.29
RectTransformUtility.ScreenPointToLocalPointInRectangle  (1) 2020.04.11
Camera.WorldToScreenPoint  (0) 2020.04.11
유니티 Layer - UI 출력 우선 순위 정하기  (1) 2020.04.11

댓글