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; } }