A* 구현 중 Cell2Pos, Pos2Cell의 추가 설명이 필요합니다.
341
작성한 질문수 10
오브젝트의 CellPos와 맵 전체를 스캔한 collision 배열의 Index를 서로 동기화시켜주기 위해서 만든 것으로 이해하고 있는데 이게 맞는지 궁금합니다.
그리고 x값은 cellPos.x - MinX 인데
y값은 왜 MaxY - cellPos.y 로 정의되는지도 잘 모르겠습니다.
답변 1
0
음~ 괜히 저렇게 만들어서 많은 분들의 혼란을 야기한 것 같네요.
크게 중요한 부분은 아니고 좌표 기준이 달라서 그런데요.
유니티에서는 x, y 좌표가
x는 오른쪽으로 증가, 왼쪽으로 감소이고
y는 위로 증가, 아래로 감소입니다.
그런데 cell을 만들 때 x는 동일하지만 y는 아래로 증가, 위로 감소가 되게 만들었으니
계산법이 저렇게 된 것 뿐입니다.
툴을 만들 때 유니티 축 방향대로 y를 만들면 저런 복잡한 계산이 사라집니다.
나중에 개인 프로젝트 작업할 땐 저도 헷갈려서 고쳐 쓴 기억이 있네요.
1
MapEditor를 따라 칠 때 생각없이 따라쳤나봅니다.
찾아서 제가 이해하기 쉽도록 수정했습니다.
텍스트 파일은 당연히 거꾸로 찍히지만 제가 생각한대로 잘 작동하네요..
답변 감사합니다^^
혹시나 비슷한 문제로 고민하고 계신 분들이 있을까 수정 내역 첨부합니다.
// MapEditor.cs
GenerateMap()
수정 전 -> for (int y = tmBase.cellBounds.yMax; y >= tmBase.cellBounds.yMin; y--)
수정 후 -> for (int y = tmBase.cellBounds.yMin; y <= tmBase.cellBounds.yMax; y++)
// MapManager.cs
CanGo()
수정 전 -> int y = MaxY - cellPos.y;
수정 후 -> int y = cellPos.y - MinY;
Cell2Pos()
수정 전 -> return new Pos(MaxY - cell.y, cell.x - MinX);
수정 후 -> return new Pos(cell.y - MinY, cell.x - MinX);
Pos2Cell()
수정 전 -> return new Vector3Int(pos.X + MinX, MaxY - pos.Y, 0);
수정 후 -> return new Vector3Int(pos.X + MinX, pos.Y + MinY, 0);
Lessons 3 & 4 don't have subtitles unfortunately
0
39
1
MessagePack
0
105
1
본인 플레이어 이동 관련 질문
0
69
1
Part7 Part9 질문이 있습니다.
0
89
1
.
0
131
1
.
-1
119
2
게임 로직 루프에서 게임 틱 누락으로 인한 높은 CPU 사용 문제
0
103
1
타일 팔레트 깔았는데도 안돼요
0
149
2
2D로 그냥 만들어도 되나요?
0
95
2
지난 강의와 이어지는게 맞을까요?
0
96
2
순환참조 문제로 인해 발생하는 문제는 없을까요?
0
166
2
유니티 클라와 C++서버연동
0
291
2
멀티플레이 테스트 환경 관련 질문입니다
0
227
3
강의 후반부에 순서 동기화를 위해 잡큐를 사용 안 한 부분 질문입니다!
0
164
2
코드 관련한 몇 가지 질문입니다!
0
168
2
3d 프로젝트 이동 동기화 관련
0
343
4
파트 7 스트레스 테스트 질문 드립니다.
1
204
2
맵 이동 방식
0
144
0
맵 이동 관련해서 질문드립니다.
0
97
1
안녕하세요 도저히 알 수 없는 오류가 나와서 질문드려요,,
0
223
2
안녕하세요. 일전에 질문 드린 포폴 준비 관련 질문의 추가 질문입니다!
0
173
1
[팁] 2024년 기준 버전 이슈?
0
469
1
SendBuffer.cs 삭제 후 대체 되는 부분의 장단점?
1
210
1
지금 강의의 유니티 클라를 IOCP 서버와 연동하는 것
0
343
2





