人物移动时怎么自动根据地形拐弯?

id=2的在脚下,但是id=3的可能在很远的地方,不一定是在id=2的周围

那我是不是还要根据坐标去获取这个位置的地板信息,那是不是还要遍历?

问题是那地图的数据得用循环来遍历找吧,每一帧循环找一遍不会卡吗?可能几个十几个没啥问题,几百上千个呢?

好一个循环遍历…你再想想吧,上面几楼说的很明白了,方案就是:拿前左右三个key 取 value

地板的id并不是按照顺序来的,id=1的周围不一定就是234,如果不循环遍历的话,我要怎么获得周围地板的id?

好家伙。。。我直接好家伙。。。
你这地图总不至于是每帧都在变吧?如果是,那只能说你们6p。。。。
每次生成的时候存起来,很难么?这样还需要每帧遍历么?生成的时候总是会遍历或者啥的,这时候顺便存起来就好

生成的时候存那是很简单的啊,有个问题是,人物在那个地板上是不知道的,知道的只有人物的坐标,人物的坐标还是每帧都在变的,那这时候不遍历的话,怎么知道人物在那块地板上?

题目上也讲了,我也觉得每帧都遍历会很卡,不现实,所以才问有没有其他的办法

他们的意思是这样的,你的配置表里面有xyz这些值对吧,你可以用xyz于配置建立一个转换根据坐标xyz就能查到这一个地图块的配置,你人物不管往哪里走都可以获取到坐标对吧,然后xyz转换一下是不是就获取到这个块的配置了。然后周围的坐标都可以算出来,周围的格子信息一查是不是也有了。

…为什么需要遍历,你还没理解么?
假设,你们地图是1920*1080横屏。均匀分成了40x20格子,那么每个格子的大小是不是知道了?根据格子大小、玩家坐标然后计算出玩家所在格子不难吧?这还需要遍历么?

根据这个表来看,我很难理解生成的时候

顺序不对的情况…

你试一下,圆柱体开启 接受阴影 试试。

就算顺序不对,你生成后是不是可以存一个临时的数据键值对或数组???根据临时数据取下标不也行?

你的意思是吗,在生成地板的时候,以地板的xyz坐标为索引,搞一个三维数组?计算出玩家坐标所在的地板后,在根据坐标获取相邻地板的数据?

就是这个意思。只是不一定非要是数组,否则负数要转正转(比如转为10000以下为正数,负数转为正数+10000),这会导致数组十分巨大。
进一步考虑,就是将下标转成字符串,map[“x,y,z”] = mapobject

勾选了ReceiveShadow后还是一样的


开启投影显示是这样的

感觉像是链式哈希表

不用,只需要划分好几个格子,然后以左下为0,0,0这样格子坐标永远是正数,也不需要转换

就是这个意思,我记得三维坐标好像是y表示高度吧?所以地图可能是map[y][z][x]这样,查相邻格子的话就是y相同去查对应的x+1、x-1、z+1、z-1,这样只需要找4个,最多8方向找8个顶天了
一般做a*的也会做类似格子划分的,如果是固定地图,我记得看过有方案是生成高度图直接录入地图信息的那种

这个寻路方案能帮到你么?
https://github.com/cocos-creator/CococsCreator-public-technology-solutions/tree/main/demo/Creator3.3.2_3D_Navigation