보시는 것처럼, 위 게임은 메뉴화면을 불러온 뒤 Talk를 선택해 주는 것으로 NPC와 대화가 가능합니다.
Check를 선택하면 지면이나 오브젝트를 조사할 수 있습니다.
조금 더 다양한 커맨드들을 지원하는 케이스로, 이것도 마찬가지인 시스템입니다.
약간 더 변형을 줘서 메뉴창에서 아이템을 선택해 직접 사용하는 방식으로 퍼즐을 해결할 수도 있습니다.
제 경우에는 선택한 메뉴 커맨드나 아이템의 id번호를 변수로 받은 뒤에
이벤트 앞에서 $game_player.check_action_event 을 통해 결정버튼을 강제로 작동시키고,
액터의 정면이나 아래에 있는 이벤트는 메뉴 커맨드나 아이템 id의 변수를 확인해 조건분기마다 그에 적합한 상호작용을 하도록 설계했습니다.
그런데 치명적인 문제가 발생했습니다.
예를 들어, 만약 Talk의 기능을 사용해서 NPC에게 대화를 거는 경우라면 당연히 대화가 돼야 할 것입니다.
하지만 Check와 같이 지면이나 오브젝트를 조사하는 상황에서도 NPC가 주인공의 정면에 있다면 대화가 가능한지를 먼저 체크하게 됩니다.
Check를 통해 "지면에 아무것도 없습니다." 라는 문장을 띄워야 하는 상황에서도
$game_player.check_action_event 로 강제로 작동된 결정버튼때문에 NPC와 상호작용을 체크하면서 이벤트들이 주인공을 향합니다.
이와 비슷하거나 동일한 기능을 가진 쯔꾸르게임의 스크립트를 조사해 봤는데,
어떤 방식인지는 이해가지만, 짧게 설명드리기 굉장히 힘든 방식을 사용했습니다 ㅠㅠ
그래서 이 문제를 해결할만한 다른 쉬운 방법이 있는 것인지,
아니면 알고리즘 자체를 재설계 해야 하는 것인지, 고민이 많이 됩니다..
- 질문할 내용이 이 게시판이나 강좌에 이미 있는지 확인합니다.
- 하나의 게시물에는 하나의 질문만 합니다.
- 제목은 질문의 핵심 내용으로 작성합니다.
- 질문 내용은 답변자가 쉽게 이해할 수 있도록 최대한 상세하게 작성합니다.
- 스크립트의 전문이 필요할 경우 txt 파일 등으로 첨부해 주시기 바랍니다.
- 답변받은 게시물은 삭제하지 않습니다.
- 답변이 완료된 경우 해당 답변해주신 분들께 감사의 댓글을 달아줍니다.
- 처음 오신 분들은 공지 게시물을 반드시 읽어주세요!
※ 미준수시 사전경고 없이 게시물을 삭제합니다.