新建2维数组t,占4个格子的就在for循环4次 t[x1-4, y1-4]=true, 占1个格子就for循环一次, 再用普通的A*寻路
单个cell的已经写完了,结果策划说要搞个boss,占4个格子,直接吐血
你是要走到boss附近, 不是boss本身
我们是boss可以寻路找我的
这种不都是把boss也认为是一格嘛?反正你这格子又不会展示给玩家看?除非你是类似英雄无敌那种战棋类?
还真的就是战旗类,会展示给玩家看!
厉害了,坐等大佬方案
你就是大佬,给你周六日两天好好想想,希望你不要不识抬举!哈哈哈
刚刚想了个方案,但是感觉有个问题不知道该怎么处理。
把地图信息按4格转化成1格的形式,图上地图大小就只有红框部分,然后boss就可以按单格去寻路
但是玩家只有一格,不知道该怎么去确定玩家是转换后的哪一格了。
不知道这样可不可以?以你这个图为例,玩家在boss的左上方(两个锚点都是.5,.5),所以认为玩家是自己右下那个点距离boss最近,,所以玩家转换成如图红框的格子:

因为玩家在boss左上,那么只能去寻这个点的右方、下方两个点(4方向),也就是图中绿框为中心的位置

只是个人想法,没有经过实践,不确定能否行得通
目前可知,有一个问题也是解决不了的,因为四格如果算一大格,走一步相当于走了两个小格,而小格划分的话,走一步,相当于走半个大格才对。
鄙人有三策:
下策是楼上一位仁兄说的:新建2维数组t,占4个格子的就在for循环4次 t[x1-4, y1-4]=true, 占1个格子就for循环一次, 再用普通的A星寻路。此算法优点是写法简单,缺点是运算量偏大,性能可能会有点低。
中策是这四个点按照与起点的曼哈顿距离从近到远排序再依次使用普通A星算法,寻到了就立马返回。此算法写法也比较简单,运算量适中。
上策是深度修改A星算法,具体表现在对估计值这块订制,需要考虑四个点的情况。此算法写法最复杂,但运算量最低。
只能说想偏了…
中策考虑过,有问题,因为分别四个点去寻路,无法确定中途路径是2格的宽度才可以通过。其他两策,我再理解理解
两个网格啊,第二个网格的单元格边长是第一个的两倍,移动对象根据自身占用面积决定使用哪个网格。不然等你在现在这个网格上做完,策划会告诉你,占2x2单元格的boss不应该可以通过只占一个单元格的路径
网格是图的特殊形式,A星算法可以应用在更抽象的图上。把网格转换为一个图,四格同样可以当做一个节点处理。
最近大脑思路比较新奇,突然想到一个极简单的方法。如果寻路单位是4个格子的话,你可以任选1个格子作为基础寻路位,比如选了左上角的为寻路位,那么你就要注意你寻路后的所有路径点的右边、右下和下边的格子都要是可通过的,逆向思维一下,就是所有障碍点的左边、左上和上边都也要是障碍点(右边界和下边界也是),所以解决方法就是在寻路之前,手动按照上面说的变更下网格的障碍布置,寻路结束后再还原。当然,以上纯颅内思路,尚未验证,仅供参考。
嗯,基本就是和你想的差不多去实现的

