挖矿游戏怎么推动箱子


如同,我用二维数组做的地图,然后根据二维数组来实例化预制体,我已经能检测到这个箱子右边是不是空地,我怎样才能把这个箱子不多不少的往右边推一格呢

moveto格子的宽度

用数组处理游戏逻辑

获取数组的位置坐标

我可以获取到坐标,但我怎么获取这个箱子预制体呢

关键是我获取不到这个箱子预制体啊

你不是动态生成的吗,动态生成箱子都存储在一个数组下面,第几个箱子要移动就取数组的第几位

我觉得是看需求吧,比如角色和箱子移动是否按照格子移动的,判定右走,右走有箱子,那箱子也往右移动一格
如果格子只是地图的直观感受,人物可以自由移动,那就用碰撞,移动方向 = 箱子方向就推动

你能检测到箱子的移动方向是否是空格,那你应该是能拿到这个箱子的节点对象吧?然后跟人物一起移动就好了,不过是人物移动到箱子的位置,箱子移动到顺着方向的下一个位置而已

看你这个项目图,你可能设计结构会有问题,我记得你上一篇问的移动的问题,你是用的移动动画做的,这样的话中途停止转向不方便,如果想推箱子推半格再换个方向走的话就不好实现,这里推荐在主逻辑里用update按帧去刷新位置要好得多。以前学习的时候做过类似的推箱子的游戏,那时候还是2dx-3.6,c++写得想哭。。。

就是拿不到这个节点,只能拿到二维数组上箱子的数据

我现在用的cc.tween控制移动,每次肯定会至少走一格的,不需要中途停止转向

明白了,你是存的二维的地图信息吧?这里需要把地图信息和节点对应起来,简单做法就是再来个对应的数组存节点,或者就是根据地图行列计算坐标然后遍历children找到对应节点

这个看项目需求来的,只是个建议

那对应数组存节点是不是会比较好

看个人习惯和你项目设计吧,主要看你怎么顺手

你可以拿两个数组。一个数组存纯数字,一个数组存node节点。查找左边是否又方块的时候就直接查找数字数组,然后拿到对应xy去node数组取节点即可。

我用了另一个办法做了,创建的时候用一个数组把能产生互动的节点的脚本存进去了,然后之后碰上的话就便利这些的脚本的在数组中的i,j值,找到对应的脚本就可以调用方法了

goodjob

都是大佬们教的 :joy: