본문 바로가기
게임 엔진 - 유니티/[루키스] 유니티

[유니티 Note] 섹션 6-3

by 묻공러 2025. 7. 2.

# 카메라 시점이 벽에 막히면 당겨주는 기능 구현

해당 기능을 구현하기 위해서는

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