
3D 개인 프로젝트를 진행하면서 메인 카메라를 통해 Ray를 발사하여 물체와의 상호작용 하는 방법을 적용하는 중이었다.
코드도 몇 번을 확인해도 올바르게 작성됬고, 스크립트도 컴포넌트에 제대로 붙어있었는데 원하는 구현이 작동하질 않았다.
혹시 몰라
Debug.DrawRay(ray.origin, ray.direction * maxCheckDistance, Color.red);
디버그를 통해 상황을 파악해보려 했는데, 레이의 발사 자체가 이뤄지지 않았다는 사실을 확인했다.
<정상적인 디버그 상황>

<당시 상황>

Ray는 메인 카메라를 통해 발사되도록 코드가 짜여있었다. 따라서 Ray의 발사 스크립트가 문제가 없다면 메인 카메라에 문제가 있다는 생각이 떠올랐다.
마침 전날 프로젝트 진행에 문제가 있어서 프로젝트를 재생성 했는데 그 이후 메인 씬이 날라가서 오브젝트를 새로 다 배치해주는 일이 있었다.
그래서 이에 포커스를 맞춰서 혹시 메인 카메라가 없는건 아닐까 란 생각을 했고, 어떻게 메인 카메라를 설정하는지 검색해보니 생각보다 간단했다.
메인 카메라 태그를 달아주면 되었다.


처음 위와 같은 설정값이었던 이름만 메인 카메라일 뿐이었던 오브젝트의 태그를 메인 카메라로 달아주자 레이가 정상적으로 발사되었다.
이제 Camera.main을 사용하여 이 카메라에 접근할 수 있게 된 것이다.
주의할 점은 한 번에 하나의 카메라만 메인 카메라 태그를 가질 수 있다 것이다. 따라서 새로운 카메라에 메인 카메라 태그를 지정하면, 기존의 메인 카메라는 이 태그를 잃게 된다. 이 점을 유의할 필요가 있다.
private Camera _camera;
void Start()
{
_camera = Camera.main;
}