메인카메라 정중앙에 Ray를 쏠때 안됐던 이유

2024. 10. 30. 11:34카테고리 없음

메인카메라 정중앙에 Ray를 쏠때 안됐던 이유

해당 필드에서 Camera 를 가져와서 해당카메라의 정중앙 위치에 레이를 쏴서 해당 레이에 부딪힌 오브젝트 정보를 볼려고 했는데 안되서 이유를 찾아봤다.

Interaction 클래스 안의 카메라 내용들만 뽑음

private Camera camera;
void Start()
{
    camera = Camera.main;
}
void Update()
{
    if(Time.time - lastCheckTime > checkRate)
    {
        lastCheckTime = Time.time;

        Ray ray = camera.ScreenPointToRay(new Vector3(Screen.width / 2, Screen.height / 2));
        RaycastHit hit;

        if(Physics.Raycast(ray, out hit, maxCheckDistance, layerMask))
        {
            if(hit.collider.gameObject != curInteractGameObject)
            {
                curInteractGameObject = hit.collider.gameObject;
                curInteractable = hit.collider.GetComponent<IInteractable>();
                SetPromptText();
            }
        }
        else
        {
            curInteractGameObject = null;
            curInteractable = null;
            promptText.gameObject.SetActive(false);
        }
    }
}

 

이렇게 카메라 정보를 메인카메라에서 가져온 다음에 그 해당카메라의 위치에 따라 레이를 쏘는데 안됐던 이유는 정확한 이유는 찾아봐야겠지만 아마 에셋에서 메인카메라를 건드리는게 있었어서 메인카메라가 내가 원하는 값이 들어가지 않아 레이가 이상한 방향을 쏘고 있었던게 문제였다.

 

해결

[SerializeField] private Camera camera;

void Start()
{
    //camera = Camera.main;
}

 

카메라의 정보를 드래그엔 드롭으로 가져와서 실행해보니 내가원하는데로 레이가 갔다.