유니티 3D에서 오브젝트를 약간 위에서 바라보는 따라다니는 카메라 스크립트입니다.
프로젝트 만들기
1. 3D용으로 프로젝트를 생성합니다.
2. Hierarchy 창에 3d 오브젝트 "Terrain"과 "Cyliner"를 추가합니다.
3. "Terrain"의 Position 값을 "-500, 0, -500"으로 설정합니다.
4. "Cylinder"오브젝크를 이동하는 C# 스크립트를 생성하고 "Cyliner"에 연결합니다 - "CylinderController.cs"
(실행해서 상하좌우 화살표 키로 실린더가 잘 이동하는 지 확인합니다.)
-- 여기까지는 https://coding-abc.kr/297 글을 참고합니다.
5. 카메라를 움직이는 스크립트를 생성하고, "Main Camera"에 연결합니다 - FollowCamera.cs
카메라가 오브젝트의 위치를 계속 추적하면서 특정 오프셋을 유지하도록 합니다. 이를 위해 다음과 같은 스크립트를 사용할 수 있습니다.
using UnityEngine;
public class FollowCamera : MonoBehaviour
{
public Transform target; // 카메라가 따라다닐 타겟 오브젝트
public Vector3 offset; // 타겟 오브젝트로부터의 위치 오프셋
public float smoothSpeed = 0.125f; // 카메라 이동의 부드러움 정도
void LateUpdate()
{
// 타겟 위치에 오프셋을 적용
Vector3 desiredPosition = target.position + offset;
// 부드러운 이동을 위해 Lerp 사용
Vector3 smoothedPosition = Vector3.Lerp(transform.position, desiredPosition, smoothSpeed);
// 카메라 위치를 업데이트
transform.position = smoothedPosition;
// 카메라가 타겟을 바라보도록 회전
transform.LookAt(target);
}
}
6. 위 스크립트를 사용하려면 다음과 같은 절차를 따르면 됩니다:
1. 유니티 에디터에서 FollowCamera.cs 파일을 생성하고 위 코드를 복사하여 붙여넣습니다.
2. 카메라 오브젝트에 이 스크립트를 추가합니다.
3. 스크립트 인스펙터에서 Target 필드에 카메라가 따라다닐 타겟 오브젝트를 드래그 앤 드롭합니다.
4. 'Offset' 필드에서 원하는 오프셋 값을 설정합니다. 예를 들어 (0, 5, -10)과 같은 값을 입력하면 카메라는 타겟 오브젝트의 약간 위쪽에서 뒤를 따라다니게 됩니다.
5. 'Smooth Speed' 필드에서 부드러움 정도를 설정합니다. 값이 낮을수록 부드럽게 움직입니다.
이 스크립트는 LateUpdate() 메서드에서 매 프레임마다 타겟 오브젝트의 위치를 추적하여 카메라의 위치를 업데이트합니다. Vector3.Lerp 메서드를 사용하여 부드러운 이동을 구현하며, transform.LookAt(target)을 통해 카메라가 항상 타겟을 바라보도록 합니다.
(실행 결과)
관련 글:
'유니티_unity' 카테고리의 다른 글
(유니티) 키보드로 3D 오브젝트 좌우 앞으로 뒤로 이동하기 (0) | 2024.05.25 |
---|---|
(유니티) 월드 좌표와 스크린 좌표, WorldToScreenPoint 변환 (0) | 2024.05.12 |
(유니티) 룰렛이 멈추는 위치의 문자열 출력하기 (0) | 2024.05.06 |
(유니티) 오브젝트가 화면 밖으로 나가면 삭제하기 (0) | 2024.04.09 |
(유니티) 프리팹 Prefab: 마우스 버튼을 클릭한 자리에 프리팹 출력하기 (0) | 2024.04.09 |