# 카메라 시점이 벽에 막히면 당겨주는 기능 구현
해당 기능을 구현하기 위해서는
CameraController 클래스의 LateUpdate에서
Raycasting을 실행해서 특정 Layer를 감지하는 경우에
카메라의 월드좌표를 조금 당겨주면 된다
private 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 - _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);
}
}
}
Wall 객체를 임시로 생성하고 Layer를 Wall로 변경해서
실습을 진행하면, 정상적으로 작동하는 것을 확인할 수 있다
# 추가 사항
MainCamera를 다른 씬에서도 활용해야 하는 경우가 일반적이기에
MainCamera에서 CameraController 컴포넌트 클래스를 부착하고
일부 수정을 한 다음에 prefab으로 생성해서 다른 씬에서도 활용하면 된다
또한, CameraManager도 상황에 따라 추가를 해서 활용하면 된다
'게임 엔진 - 유니티 > [루키스] 유니티' 카테고리의 다른 글
| [유니티 Note] 섹션 7-2 (0) | 2025.07.05 |
|---|---|
| [유니티 Note] 섹션 7-1 (0) | 2025.07.05 |
| [유니티 Note] 섹션 6-2 (0) | 2025.07.02 |
| [유니티 Note] 섹션 6-1 (0) | 2025.07.02 |
| [유니티 Note] 섹션 5-6 (0) | 2025.07.02 |