Unity_Learn/Assets/Scripts/Controllers/CameraController.cs
2025-09-04 16:57:16 +09:00

44 lines
1.3 KiB
C#

using UnityEngine;
public class CameraController : MonoBehaviour
{
[SerializeField]
Define.CameraMode _cameraMode = Define.CameraMode.QuarterView;
[SerializeField]
Vector3 _delta = new Vector3(0.0f, 6.0f, -4.0f);
[SerializeField]
GameObject _player = null;
void Start()
{
}
void LateUpdate()
{
if (_cameraMode == Define.CameraMode.QuarterView)
{
RaycastHit hit;
if (Physics.Raycast(_player.transform.position, _delta, out hit, _delta.magnitude, LayerMask.GetMask("Wall")))
{
// (캐릭터 --> 카메라로 시도) 벽과 캐릭터 사이의 거리를 구한 다음에 0.8을 곱해서 카메라가 벽보다 조금 앞에 위치하게 한다.
float dist = (hit.point - _player.transform.position).magnitude * 0.8f;
transform.position = _player.transform.position + _delta.normalized * dist;
}
else
{
transform.position = _player.transform.position + _delta;
transform.LookAt(_player.transform);
}
}
}
public void SetQuaterView(Vector3 delta)
{
_cameraMode = Define.CameraMode.QuarterView;
_delta = delta;
}
}