• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

이 경우에는 왜 안되는건지 모르겠습니다

21.05.12 11:43 작성 조회수 204

0

계층뷰에서

Cube와 빈 GameObject하나를 만들었습니다

GameObject에 InputTest라는 스크립트를 부착했습니다

InputTest에는 OnMouseDown(), OnMouseDrag(), OnMouseUp()을 넣었고 각각 함수 이름이 print()로 출력이 되도록 했습니다

이상한건, 이 상태에서는 플레이 상태에서 Cube를 클릭했다고 해도 아무런 메세지가 뜨질 않습니다

그래서, Cube에 InputTest 스크립트를 부착했는데 되더군요요심지어 해당 스크립트를 비활성화 시켜도 됩니다

OnMouse류의 함수들은 반드시 대상 게임 오브젝트에 부착 되어야 하는 건가요?

답변 1

답변을 작성해보세요.

0

안녕하세요. 답변이 늦었습니다.

이 경우 콜라이더가 있어야 됩니다. 

이 종류의 함수가 그게 있어야 동작하도록 되어 있거든요. 

https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnMouseDown.html

여기 보시면 콜라이더가 있어야 한다고 쓰여 있는데요. 

사실 유니티가 이걸 만든거라서요. 어떻게 이게 왜 있어야 한다는 이야기는 안하고요. 

제가 예상하기로는 Raycast 함수가 내부적으로 사용되어서 그렇지 않을까 생각이 드네요.

Raycast 가 콜라이더가 있어야 광선을 쏴서 체크를 하는 식으로 내부동작이 이루어진다고 생각하고 있거든요.

(콜라이더가 없으면 Raycast 도 동작을 안합니다) 

감사합니다. 좋은 저녁 되세요.