Practice_Unity/Assets/Scripts/Controllers/CameraController.cs
Seonkyu.kim ba665c50ce 작업
1. 카메라 컨트롤러 작성
2. Data 매니저 작성
3. 몬스터 세팅 시작
4. Gemini 환경 설정 등록
2025-09-23 17:58:22 +09:00

61 lines
2.2 KiB
C#

using System;
using UnityEngine;
public class CameraController : MonoBehaviour
{
[Header("Follow Camera Settings")]
[SerializeField]
Define.CameraMode _cameraMode = Define.CameraMode.QuarterView;
[SerializeField]
Vector3 _position = new Vector3(0.0f, 15.0f, -7.0f);
[SerializeField]
float _verticalFraming = 0.0f; // 음수일 수록 밑으로
[Header("Target Settings")]
[SerializeField]
GameObject _player = null;
[SerializeField]
// 카메라가 플레이어 캐릭터의 발에서 이정도 위치만큼 이동한 곳의 위치를 바라보도록 한다.
Vector3 _lookAt = new Vector3(0.0f, 1.2f, 0.0f);
void Start()
{
}
private void LateUpdate()
{
switch (_cameraMode)
{
case Define.CameraMode.QuarterView:
Vector3 lookAtPos = _player.transform.position + _lookAt;
transform.position = _player.transform.position + _position;
transform.LookAt(lookAtPos);
transform.Rotate(Vector3.right, _verticalFraming, Space.Self);
/*
RaycastHit hit;
if (Physics.Raycast(_player.transform.position, _position, out hit, _position.magnitude, LayerMask.GetMask("Block")))
{
// (캐릭터 --> 카메라로 시도) 벽과 캐릭터 사이의 거리를 구한 다음에 0.8을 곱해서 카메라가 벽보다 조금 앞에 위치하게 한다.
float dist = (hit.point - _player.transform.position).magnitude * 0.8f;
transform.position = _player.transform.position + _position.normalized * dist;
}
else
{
transform.position = _player.transform.position + _position;
// transform.LookAt(_player.transform);
Vector3 lookAtPos = _player.transform.position + _lookAt;
transform.LookAt(lookAtPos);
transform.Rotate(Vector3.right, _verticalFraming, Space.Self);
}
*/
break;
default:
break;
}
}
}