[SerializeField]
Vector3 _delta = new Vector3(0.0f, 6.0f, -5.0f);
[SerializeField]
GameObject _player = null;
void LateUpdate()
{
if (_mode == Define.CameraMode.QuarterView)
{
RaycastHit hit;
// 카메라와 플레이어 사이 벽이 있는 경우 카메라 위치 조정
if (Physics.Raycast(_player.transform.position, _delta, out hit, _delta.magnitude, LayerMask.GetMask("Wall")))
{
float dist = (hit.point - transform.position).magnitude * 0.8f;
transform.position = _player.transform.position + _delta.normalized * dist;
}
else
{
transform.position = _player.transform.position + _delta;
transform.LookAt(_player.transform);
}
}
}
레이캐스트를 활용하여 카메라와 플레이어 사이 벽이 있는 경우 카메라의 위치를 조절.
[카메라와 플레이어 사이 벽 X]
[카메라와 플레이어 사이 벽 O]