• [SRPG를 만들자!!] SRPG를 만들자!!! #7 캐릭터 이동2015.03.21 AM 01:04

게시물 주소 FONT글자 작게하기 글자 키우기
LINK : //denimpowell.tistory.com/11

어셋스토어에서 구매한 내비게이션 기능은 FFT를 구현하기에는 빠진 기능이 많음.  패스파인딩 관련 소스를 수정하였음.


수정하여 구현한 기능

1. 고저차를 고려한 패스파인딩

2. 적, 아군을 구별하여 패스파인딩

3. 지형을 고려한 이동 애니메이션

4. 가장중요! 건너 뛰기 가능

5. 최단 + 게으른 거리 계산


원래는 상용소스 빼고 소스를 깃헙에 통째로 올리려고 했는데 상용소스를 수정할 수밖에 없게됨.  안타깝지만 그냥 프라이빗 리포에 저장할 수밖에.

예상외로 쉽지 않은 부분이 있음.  이동 가능한 타일을 계산하는 부분과 실제 이동시의 최단거리 계산부분이 분리되어 있기 때문에 두 곳 다 같은 파라미터 / 조건을 넣어 주어야 할 필요가 있음.  이런 식으로 분리하는 것이 최선이었나? 하는 의문.  


상세 내용


1. 고저차를 고려한 패스 파인딩

  특정 높이차 이상의 노드는 패스파인딩 제외함. 아래와 같이 밑으로 떨어질 것 같거나 혹은 너무 높은 곳은 이동 불가.


물론 이동이 가능하다고 해서 한 칸 옆으로 바로 뛰어내리면 안되는 경우도 있음.


2. 적, 아군을 구별하여 패스파인딩

적의 경우에는 장애물로 간주하여 이동/지나가기 불가. 아군의 경우에는 아군의 위치로 이동할 수는 없지만 지나가기는 가능하기 때문에 패스파인딩에 포함시켜야 함.


3. 지형을 고려한 이동 애니메이션

타일 노드간의 애니메이션을 iTween을 통해 이동하게 되어 있음.  계단형일 경우 점프, 평지나 경사일 경우 지형을 타고 넘어가도록 설정함.



4. 건너 뛰기 가능

패스 파인딩 시에는 같은 방향 다다음 링크까지 검색함.

즉,

     O
     O
OOX OO
     O
     O

인접 4칸은 물론 한 칸 건너까지 패스파인딩에 포함. 대각선 타일은 포함 안함.  이 때 인접 타일은 이동불가이면서 다다음 칸은 이동 가능한 경우를 정확하게 판단할 필요가 있음.



5. 최단 + 게으른 거리 계산


밑으로 떨어졌다가 다시 올라가야할 경우에는 그냥 점프해서 건너감.



물론 한칸 건너뛰기로 해결 불가능 할 경우 쓸 데 없이 건너 뛰는 동작을 하지 않음


그나마 난이도 높은 과제를 큰 문제 없이 해결할 수 있어서 다행임.  


앞으로의 큰 과제는 1. 적 캐릭의 인공지능, 2.원거리 활공격시의 장애물 판정, 이것 두 개 정도??

댓글 : 3 개
오 이런 것 좋네요.
감사히 잘 보겠습니다 :)
감사히 잘보고 친구신청하고 갑니다 ㅎㅎ
유니티로 제작하시는것 같은데

이번에 언리얼4 엔진이 정말 정말 잘 나왔습니다. 시간 되시면 꼭 한번 설치하셔서 태스트 해보세요

저는 아마도 언리얼4 쪽으로 완전히 넘어 갈것 같습니다.
친구글 비밀글 댓글 쓰기