CameraController.cs
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);
}
}
}
1. 벽과의 충돌 검사
if (Physics.Raycast(_player.transform.position, _delta, out hit, _delta.magnitude, LayerMask.GetMask("Wall")))
2. 벽을 통과하지 않도록 카메라 거리 조절
float dist = (hit.point - _player.transform.position).magnitude * 0.8f;
3. 벽이 있으면 가까운 거리에 배치
transform.position = _player.transform.position + _delta.normalized * dist;
4. 벽이 없으면, 기본 위치 유지
else
{
transform.position = _player.transform.position + _delta;
transform.LookAt(_player.transform);
}