카테고리 없음
[유니티]Unity에서 오브젝트를 특정 대상이 있는 방향으로 쳐다보게 만드는 방법
Bit by Bit
2024. 11. 23. 23:56
728x90
Unity에서 오브젝트가 특정 대상을 쳐다보게 만드는 방법은 게임 개발에서 자주 사용하는 기능입니다. 예를 들어, 적 AI가 플레이어를 바라보거나, 카메라가 특정 지점을 따라가도록 설정할 때 사용됩니다. 이번 포스팅에서는 Transform.LookAt() 메서드를 활용한 기본 구현부터 축 제한, 부드러운 회전에 이르기까지 다양한 방법을 다뤄보겠습니다.
1. 기본 구현: Transform.LookAt()
Transform.LookAt()은 오브젝트를 특정 대상 방향으로 회전하게 만듭니다. 간단한 예제는 아래와 같습니다.
using UnityEngine;
public class LookAtTarget : MonoBehaviour
{
public Transform target; // 바라볼 대상
void Update()
{
if (target != null)
{
transform.LookAt(target);
}
}
}
코드 설명:
- target: 바라볼 대상의 Transform을 할당합니다. (예: 플레이어, 특정 오브젝트 등)
- transform.LookAt(): target을 향해 현재 오브젝트의 방향을 설정합니다.
- Update(): 매 프레임마다 실행하여 지속적으로 대상을 쳐다보게 합니다.
2. 특정 축만 고정하고 바라보기
3D 공간에서는 모든 축을 회전하지 않고 특정 축(예: Y축)을 고정하거나 제한해야 할 때가 있습니다. 예를 들어, 캐릭터가 고개만 움직여 목표를 쳐다보도록 하려면 Y축 회전을 고정해야 합니다.
using UnityEngine;
public class LookAtTargetWithYAxis : MonoBehaviour
{
public Transform target;
void Update()
{
if (target != null)
{
// 목표 방향 계산 (Y축만 고려)
Vector3 direction = target.position - transform.position;
direction.y = 0; // Y축 고정
// 회전 설정
transform.rotation = Quaternion.LookRotation(direction);
}
}
}
결과:
이 코드로 오브젝트는 Y축(수평 방향)만 고려하여 목표를 바라봅니다. 이를 통해 현실적인 회전 효과를 구현할 수 있습니다.
3. 부드럽게 회전하기
LookAt() 메서드는 즉각적으로 방향을 설정하기 때문에, 회전이 자연스럽지 않을 수 있습니다. 이를 해결하려면 Quaternion.Slerp() 또는 Quaternion.RotateTowards()를 활용해 부드럽게 회전하도록 설정할 수 있습니다.
using UnityEngine;
public class SmoothLookAtTarget : MonoBehaviour
{
public Transform target;
public float rotationSpeed = 2.0f; // 회전 속도
void Update()
{
if (target != null)
{
// 목표 방향 계산
Vector3 direction = target.position - transform.position;
// 목표 회전값 계산
Quaternion targetRotation = Quaternion.LookRotation(direction);
// 부드럽게 회전
transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, Time.deltaTime * rotationSpeed);
}
}
}
코드 설명:
- Quaternion.Slerp(): 현재 회전값과 목표 회전값 사이를 부드럽게 보간합니다.
- rotationSpeed: 회전 속도를 조절하여 자연스러운 움직임을 설정합니다.
4. 활용 예시
이 기능은 다양한 게임플레이 상황에서 활용됩니다:
- 적 AI: 플레이어를 추적하거나 공격 대상을 바라보게 함.
- 카메라 시스템: 특정 오브젝트를 중심으로 카메라가 회전.
- NPC 애니메이션: NPC가 플레이어를 따라 바라보며 상호작용.
5. 정리
Unity에서 오브젝트를 쳐다보게 만드는 방법은 LookAt()을 기반으로 다양한 확장이 가능합니다.
- 즉각적인 회전: LookAt() 메서드.
- 축 고정: Y축 또는 다른 축을 제한하는 방식.
- 부드러운 회전: Quaternion.Slerp()를 활용한 자연스러운 동작.
728x90