반응형
유니티 C# 캐릭터 3인칭 카메라 마우스 이동 화면 회전 간단 구현
- 코드 작성
using UnityEngine;
public class CameraController : MonoBehaviour
{
[SerializeField] private Transform player; // 캐릭터의 Transform
[SerializeField] private float distance = 5f; // 카메라와 캐릭터 사이의 거리
[SerializeField] private float xSpeed = 4; // 마우스 X 축 회전 속도
[SerializeField] private float ySpeed = 2; // 마우스 Y 축 회전 속도
[SerializeField] private float yMinLimit = -10f; // Y 축 회전 제한 최소값
[SerializeField] private float yMaxLimit = 80f; // Y 축 회전 제한 최대값
[SerializeField] private float xOffset = 0f; // 카메라의 X축 오프셋
[SerializeField] private float yOffset = 1f; // 카메라의 Y축 오프셋
[SerializeField] private float zOffset = 0f; // 카메라의 Z축 오프셋
private float x = 0f; // 현재 X 축 회전값
private float y = 0f; // 현재 Y 축 회전값
void Start()
{
var angles = transform.eulerAngles;
x = angles.y;
y = angles.x;
}
void LateUpdate()
{
x += Input.GetAxis("Mouse X") * xSpeed;
y -= Input.GetAxis("Mouse Y") * ySpeed;
y = Mathf.Clamp(y, yMinLimit, yMaxLimit);
Quaternion rotation = Quaternion.Euler(y, x, 0);
Vector3 position = player.position - (rotation * Vector3.forward * distance);
position += new Vector3(xOffset, yOffset, zOffset);
transform.rotation = rotation;
transform.position = position;
}
}
반응형