4-3 광선 강의 질문

23.01.05 00:04 작성 조회수 300

1

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

강의를 잘 따라하고 있다가 끝까지 다 보고 확인해봐도 광선이 플레이 버튼 누른 다음 부터는 나오지 않습니다 ... 스크립트랑 on off 설정도 다 맞게 했는데 문제점을 못찾겠습니다

답변 1

답변을 작성해보세요.

0

안녕하세요. 3가지 정도 원인이 생각나는데요, 하나씩 확인해보세요!

  1. XR Ray Interactor 컴포넌에 Line Type이 Straight Line일 경우, Max Raycast Distance가 0이 아닌지? 0인 경우에는 광선이 안 보일 수 있습니다.
    image

  2. XR Interactor Line Visual 컴포넌트가 비활성화되어 있는 건 아닌지? 이 경우 플레이하면 Line Renderer가 비활성화 되면서 광선이 안 보일 수 있습니다.
    image

  3. Ray Interactor 자체가 씬에는 보이는데, 게임 뷰에서만 안 보인다면, L-Shift 키를 눌러 컨트롤러를 옆으로 빼보세요. 직선일 경우 카메라와 같은 위치에 나오면 안 보일 수도 있습니다.
    (물론 XR Device Simulator를 사용해야 컨트롤러를 조작하기 쉬울 것 같네요.)
    image

 

 

추가로 하나 더 확인해봐야 할 것 같은데, 무기의 광선의 경우, 다른 오브젝트에 레이캐스팅이 되어서 광선이 안 보이는 것처럼 보일 수도 있을 것 같아요.

특히 광선 시작점이나 방향을 잘못 잡은 경우, 총이나 기타 가까운 오브젝트에 레이캐스팅이 되고 있지는 않나 확인해보세요. 추가로 레이어 설정도 확인해보시면 좋겠네요.

XR Ray Interactor, XR Interactor Line Visual 컴포넌트가 하이라키랑 인스펙터 창에 적용된 곳이 없는데 어떻게 찾아야 하나요? add component 에 검색을 하면 두 스크립트가 뜨긴 하지만 강사님이 올려주신 사진 처럼 두개의 컴포넌트가 같이 있는 창을 못찾겠습니다 ㅠㅠ

아마 두 컴포넌트가 있는 곳이 없다면, 실습 게임 제작을 하고 있을 것 같아요.

실습 게임 제작을 진행 중이시면,image(어디까지 했는지에 따라 경로가 조금 다릅니다)
Gun 아래에 Ray Visualizer의 HitRayMask를 확인해보면 좋을 것 같아요.

레이어가 다르면 타겟이 되는 오브젝트가 없으니 광선이 안 나올 것 같아요.

정상적으로 나오더라도 총을 하늘로 가리키면 광선이 꺼지는 것처럼요!

imageHitRayMask는 MOB과 ENVIRONMENT에 설정했고 플레이 전 상황은 씬과 게임 화면 모두 광선이 나옵니다.

image플레이 이후에는 위 사진처럼 광선이 나오지 않고 있습니다.

image위 사진은 first Select와 Last Select 에 둘 다 설정도 돼 있습니다

 

c# 스크립트의 문제인지 다른게 문제인지 아직도 잘모르겠습니다

 

바쁘신 와중에 죄송합니다

혹시 Environments 오브젝트들에 레이어가 설정되어있을까요? 스크립트는 아마 똑같이 넣었을 것 같고, 레이어들 설정 문제일 것 같네요.

imageEnvironments 오브젝트는 다 하나씩 확인해보니 레이어가 다 Environments 로 설정되어 있습니다

혹시 프로젝트 파일을 보내주실 수 있나요? 확인해보고 답변드릴게요.

넵 압축해서 이메일로 보내겠습니다.

프로젝트를 열어 아래 순서로 확인해봤습니다.

  1. 먼저 RayVisualizer에 On 메소드가 실행되는지를 확인했습니다.
    -> 실행됩니다.
    즉 총 자체는 집히고, Select가 작동하고, RayVisualizer가 제대로 켜지는 상태입니다.

  2. 그 후에 RayVisualizer에 Process 메소드와 그 안에 레이캐스트가 제대로 작동하는지 확인했습니다. (단순하게 Debug.Log를 각각 띄웠습니다.)
    -> 실행이 안 됩니다. 그렇다면 이 사이에 있는 코드가 문제입니다.

  3. 이 사이에 코드가 딱 두 줄입니다.
    image아래 줄에 StopCoroutine이 아니라 StartCoroutine으로 되어있어야 Process 메소드가 정상 실행될 것으로 보입니다.
    수정했습니다.
    image

  4. 정상 실행됩니다.

만약 1번에서 On 메소드가 실행이 되지 않았다면, 앞서 답변드린 대로 레이어나 이벤트 연결 등의 문제였을 것 같아요.
이렇게 많은 경우의 수 중에 중간쯤에 끊어서 확인해보면 디버깅하기 쉬워집니다!

와 감사합니다... 해결했습니다!

확인 감사합니다!