Physics.Raycast 오브젝트 검출하기




레이를 쏴서 그 오브젝트가 어떤 오브젝트인지 파악하고 각각 다른 액션이 필요하다.


타입을 나누는 이유는 캐릭터가 검출대상(box,무기,아이템등..)의 대한 메소드를 캐릭터 스크립트에서 모두 정의 하는것은 다향성부분에도 떨어지고, 코드도 보기가 좋지 않다. 오브젝트 객체가 각각 가지고 있는 스크립트에서 정의해주고 캐릭터는 어떤 상황에 어떤 함수를 실행할 것 인지 제어해 주는것이 좋을 것 같다.

그래서 타입을 나누고, 인터페이스를 활용한다.  


타입 나누기

타입의 따른 설정을 주기 위해 열거형으로 만들어줬다.


인터페이스 만들기 

InterType : 어떤 타입인지 받아 오기위함

enable : 오브젝트 스크립트에서 제어 하기 위함

ActionInter : 입력버튼을 실행 할 경우 실행되는 메서드

ShowInter, NonShowInter : 각각 상황에 맞게 실행 


박스 스크립트 부분(인터페이스)

Box, Npc, Monster 등등 IInteraction을 인터페이스 구현이 필요하다.


플레이어스크립트 레이캐스트

if (hit.transform.CompareTag(Tag.RAYCAST_TAG_INTERACTION)) 

=> 오브젝트가 INTERACTION 태그인지 확인한다.

if (iInteraction.enable==true)

=> 오브젝트 enable를 체크한다.

UI_Hud.Ins.StringSetText(iInteraction.InterString);

=> 오브젝트 스크립트에 있는 InterString를 UI_Hud에 보낸다.(싱글턴)

UI_Hud.Ins.StringSetText

=> 각각 오브젝트 스크립트에서 설정한 텍스트 박스를 띄워준다.

 


반응형

+ Recent posts