반응형
두 벡터 사이를 구형보간한다. 이 기능을 이용해서 포물선 이동하는 발사체를 구현했다.
해당 스크립트를 발사체에 할당하고, 시작 위치와 종료 위치를 할당하면 발사체가 포물선 이동한다.
예문
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 |
댓글