开发基于2D平铺的“桌上游戏”当玩家掷骰子时,我必须做出限制(如果你着地5等,移动5个棋子)基于Tilebased的桌面游戏双数限制(增量算法)
- 开始在起点
- 检查位置向两侧,上面和下面
- 检查邻居砖是适宜步行,如果t哎被更改,从而到达
- 转到邻居瓦,重复
我一直在寻找的A *和d *寻路,但它是一个新的课题,我和他们似乎更侧重于从获得点A到B,而不是“达到”,这是我所需要的。
如何通过代码来做到这一点?
我创建从阵列将其保持我的瓦片的2D阵列(我需要tilemap的的正常阵列用于其他目的):
for(int i = 0; i < 27; i++)
{
for(int j = 0; j < 33; j++)
{
tileMap[i, j] = goTile[i * 33 + j];
}
}
我现在使用的tilemap的作为我positiong因子,例如我的球员目前的位置是tileMap [2,4]。
然后我试图开发一个功能:
void pathFinding(Vector2 playerPosition, int diceNumber)
{
GameObject currentPos = tileMap[(int)playerPosition.x, (int)playerPosition.y];
for (int i = 0; i < diceNumber; i++) {
if (tileMap[(int)playerPosition.x + 1, (int)playerPosition.y].tag == "walkableGrid")
{
tileMap[(int)playerPosition.x + 1, (int)playerPosition.y].gameObject.tag = "reachable";
playerPosition.x++;
}
if (tileMap[(int)playerPosition.x - 1, (int)playerPosition.y].tag == "walkableGrid")
{
playerPosition.x--;
}
if (tileMap[(int)playerPosition.x, (int)playerPosition.y + 1].tag == "walkableGrid")
{
playerPosition.y++;
}
if (tileMap[(int)playerPosition.x, (int)playerPosition.y - 1].tag == "walkableGrid")
{
playerPosition.y--;
}
}
}
但由于在完成这个(如果它甚至会工作),就需要多行代码,我相信有使用嵌套的for循环更迅速的方法也许?
所以......你能指望我们在这里回答使它成为一个可选的操作方法? – Innat3
编辑帖子 –
向我们展示一些数据结构的代码,否则很难猜测出正确的解决方案。另外,你有没有试图自己编码? –