Unity에서 카메라를 부드럽게 이동하려면 Vector3.SmoothDamp를 사용하는 것이 좋다.
이 함수는 시작점에서 목표 지점까지의 이동을 부드럽게 보간해준다. 카메라 이동이나 객체 추적 시 매우 유용하다.
Vector3.SmoothDamp란?
SmoothDamp는 일정 속도로 목표 위치에 도달하도록 값을 점진적으로 변화시키는 함수다.
Vector3 SmoothDamp(
Vector3 current, // 현재 위치
Vector3 target, // 목표 위치
ref Vector3 currentVelocity, // 현재 속도 (참조값으로 전달)
float smoothTime, // 부드러움 시간
float maxSpeed = Mathf.Infinity, // 최대 속도 (선택)
float deltaTime = Time.deltaTime // 시간 간격 (선택)
)
간단한 사용 예제
아래 코드는 플레이어를 따라다니는 카메라에 SmoothDamp를 적용한 예제다.
using UnityEngine;
public class SmoothCameraFollow : MonoBehaviour
{
public Transform player; // 따라갈 플레이어
public float smoothTime = 0.3f; // 이동 부드러움 시간
private Vector3 currentVelocity; // 속도 저장 변수
void LateUpdate()
{
if (player == null) return;
Vector3 targetPosition = player.position + new Vector3(0, 5, -10); // 카메라 위치 오프셋
transform.position = Vector3.SmoothDamp(
transform.position,
targetPosition,
ref currentVelocity,
smoothTime
);
}
}
코드 설명
- 목표 위치 설정: 플레이어의 위치에 오프셋을 더해 목표 위치를 계산한다.
- Vector3.SmoothDamp 사용: 현재 위치에서 목표 위치로 부드럽게 이동한다.
- 속도 변수 관리: currentVelocity는 내부적으로 계산되며 다음 프레임에서도 지속적으로 사용된다.
위 코드를 적용하면 카메라가 플레이어를 부드럽게 따라다니는 효과를 얻을 수 있다. smoothTime 값을 조정하여 움직임의 부드러움을 쉽게 조절할 수 있다.
Vector3.SmoothDamp는 카메라 이동뿐만 아니라 다양한 물체의 부드러운 움직임에도 활용할 수 있는 강력한 도구다.
코드에 적용해보면 간편하면서도 자연스러운 움직임을 구현할 수 있다.
'Unity > 구현' 카테고리의 다른 글
[Unity 유니티] 2D 피격 이펙트 구현하기 (4) | 2025.01.08 |
---|---|
[Unity 유니티] 버튼을 누르고 있으면 반복 실행되게 만들기 (1) | 2023.08.19 |