엄패를 고려해야 하기 때문에 생각보다 만들기가 복잡할 거 같다. 일단 래이케스트를 쏴서 장애물이 검출되는 경우에 부딪치는 오브젝트가 있을 때를 고려해야 한다. 부딪치는 오브젝트 다음에 플레이어가 있지 않은 경우에는 엄패를 하고 있지 않은 경우이다. 이경우에 엄패를 적용해야 하는지가 문제가 된다. 일단은 적용하는 걸로 한다.
엄패를 적용하는 것을 넘어서 아에 공격이 불가능한 경우를 고려해야 된다.
검색해 보니까. 90도 이상 엄폐 보너스를 주지만 캐릭터가 한칸을 이동해서 쏠 수 있는 경우에는 측면 보너스를 준다고 한다. 그런데 레딧에선 45도이고 11타일 이내면 엄폐 보너스를 준다고 한다. 음 어느게 맞는 건지 모르겠다. 스나이퍼 라이플은 보너스를 주지 않는다고 한다.
일단은 공격이 가능한 영역을 만드는건 캐릭터를 기점으로 원형의 콜라이더를 만들고 완엄패 장애물이 있는 경우에 어떻게 되는지 한번 보고 그때 다시 알고리즘을 봐야 겠다. 먼가 가시적인게 보이지 않는데 상상을 하려니가 사고가 더이상 이어지지가 않는다 문제를 점진적으로 해결해야 겠다.
엄패를 넣지 않고 그냥 공격을 불가능 하게 만들면 만들기는 편하긴 하다. 이경우에는 그냥 턴제 전략 게임이 된다.
글을 한번 정리하는 중이다. 이게 가끔씩 정부 정책에 대한 비판을 너무 길게 쓴적이 있더라. 정치 블로그가 아니기 때문에 게임 심의 정책 같은건 유감이다 이런식으로 짧게 언급만 하고 넘어가도록 해야 겠다.
일단 스텔스 메커니즘이 필요하다. 일단 이거 보면서 아이디어를 얻어야 겠다.
도너츠 형태의 유효 사정거리를 만들고 그들을에 해당하는 노드들을 담은 다음에 그 노드들을 향해 방사형으로 래이 캐스트를 쏘고 장애물에 부딧칠 때까지 타일을 담으면 되려나 싶다. 그리고 반엄폐는 공격 가능 영역에 넣어야 하니까 기준 높이를 2로 설정을 하면 될듯 싶다.
타일을 담을때 중복한 타일인지 확인을 하는 절차가 필요할듯 싶다. 아니다 중복한 타일인지 구지 확인할 필요는 없을듯 싶기도 하다. 어차피 가능한지 여부만 확인 하면 되니 말이다. 이건 천천히 생각해 보도록 하자.
문제는 엄패의 경우인데 이건 일단 공격 가능 영역인지 판별하는걸 만들고 그다음에 생각해 볼 문제이다. 근데 이거 왜이리 만들기가 어려운지 모르겠다. 나이가 먹으면서 머리가 굳어버렸나 싶기도 하다.
문제가 있는데 그 알고리즘을 쓰면 너무 많은 중복 노드들이 생긴다는 거다. 다른 알고리즘을 생각해 내야 할듯 싶다.
각도를 검출해서 엄패물과 45도 범위 외에 있는 경우에 래이캐스트를 쏴서 장애물이 없으면 오픈을 적용하고 아닌경우에는 넘겨야 할듯 싶다. 엄패를 하고 있을때 공격은 열린 공간으로 한칸정도 이동을 해서 이동한 칸에서 부터 공격을 적용해야 할듯 싶다.
90도 단위로 4개의 영역을 만들어서 4방향에서 엄패가 되는지 확인을 하고 엄패가 되는 영역만 활성화 하면 될듯 싶다. 그리고 나머지는 레이캐스트를 쏴서 통과를 하는 경우에 공격이 가능하도록 하면 될듯 싶다. 마찬가지로 엄패를 하고 있을때 공격은 열린 공간으로 한칸정도 이동을 해서 이동한 칸에서 부터 공격이 가능할때만 되도록 해야 할듯 싶다.
중복된 노드를 담지 않도록 노드에서 레이케스트를 쏘는 걸로 해야 겠다. 일단 엄패는 생각하지 말고 장애물을 배치하고 레이캐스트를 쏴서 어떤 노드들이 공격이 가능한지 확인을 하는 시스템을 만들어야 겠다. 거꾸로 노드에서 쏘면 중복이 없을듯 싶다. 그리고 영역을 만든다면 45도 단위의 부채꼴 모양을 만들어야 될듯 싶다. 생각보다 원거리 공격도 복잡한듯 싶다.
쉬면서 코틀린 책을 흟어 보고 있는데 코틀린에는 Set이라는 중복을 허용하지 않는 자료형이 있다고 한다. 조합을 만하는듯 싶다. C#에도 그런게 있나 찾아 봐야 겠다.
https://stackoverflow.com/questions/183685/c-sharp-set-collection
일단 자동완성으로 확인해 보니까 HashSet<>하고 SortedList<>가 있더라. 새로운 무기를 얻은듯 싶다.
새로운 언어를 배워보는것이 번아웃을 해결하는데 도움이 된다고 해서 한 며칠간은 코틀린을 맛만 보는데 할해 해야 겠다.
'턴제제작' 카테고리의 다른 글
버그 픽스 (0) | 2020.02.16 |
---|---|
원거리 공격 (4) | 2020.01.31 |
편의 기능 (2) | 2020.01.23 |
오류 해결 (0) | 2020.01.22 |
로드하는거 (0) | 2020.01.18 |
WRITTEN BY