using UnityEngine; public class CameraController : MonoBehaviour { [SerializeField] Define.Cameramode _mode = Define.Cameramode.QuaterView; [SerializeField] Vector3 _delta = new Vector3(0.0f, 6.0f, -5.0f); [SerializeField] GameObject _player = null; void Start() { } void LateUpdate() { if (_mode == Define.Cameramode.QuaterView) { RaycastHit hit; if(Physics.Raycast(_player.transform.position, _delta, out hit, _delta.magnitude, LayerMask.GetMask("Wall"))) { 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) { _mode = Define.Cameramode.QuaterView; _delta = delta; } }