다양한 기록

Parrying Sword #24 : [기획] 상호작용(메뉴) 본문

유니티 엔진/Parrying Sowrd

Parrying Sword #24 : [기획] 상호작용(메뉴)

라구넹 2023. 5. 9. 15:38

최근 일이 조금 있어서 개발을 못하고 있었습니다.

다시 재개합니다.

 

플레이어와 다른 오브젝트와의 상호작용, 그 중에서도 대화나 메뉴 선택과 같은 시스템이 필요해서 만들어 보았습니다.

 

처음 생각으로는 각각의 오브젝트에 Update를 따로 붙여서 입력이 들어오면 그에 맞춰 작동하게 하면 되지 않을까 했지만,

안그래도 몬스터들 각각의 AI를 위해 스크립트들이 계속 돌아가는 상황에

너무 하드웨어에 부하가 심할 것 같아 위와 같은 방식으로 바꿨습니다.

 

평소에 인풋을 받는 것은 플레이어만 있으면 충분합니다.

메뉴가 열렸을 때만 인풋을 따로 받으면 됩니다.

 

클래스를 따로 만들어 인풋을 따로 받고, Stage_Interaction 클래스에서 virtual로 정의해둔 메소드를 사용합니다.

실제로 작동하는 것은 서브 클래스에서 정의된 내용일 것입니다. 스트라티지 패턴이라 생각하면 됩니다.

 

그런데 현재 상호작용해야 하는 오브젝트가 무엇인지 알 방법이 필요합니다.

그래서, 오브젝트에 트리거인 컬라이더를 추가하고, 컬라이더를 만나면 playerMain에 어떤 오브젝트인지 정보를 전달해주고,

컬라이더를 나가면 해당 정보를 제거하는 방식을 사용하였습니다.

 

메뉴 매니저는 playerMain에서 정보(Stage_Interaction의 서브 클래스 타입)를 얻고,

Stage_Interaction로 정의된 오브젝트에 해당 정보를 업캐스팅하여 사용합니다.