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
感觉像是链式哈希表
不用,只需要划分好几个格子,然后以左下为0,0,0这样格子坐标永远是正数,也不需要转换
就是这个意思,我记得三维坐标好像是y表示高度吧?所以地图可能是map[y][z][x]这样,查相邻格子的话就是y相同去查对应的x+1、x-1、z+1、z-1,这样只需要找4个,最多8方向找8个顶天了
一般做a*的也会做类似格子划分的,如果是固定地图,我记得看过有方案是生成高度图直接录入地图信息的那种

