好久没有写实战类的文章,今天分享一下最近在AI方面的探索和实战。
站在一个技术小白的角度要完成一款小游戏的门槛还是非常非常高。因为这个过程还需要搭建环境,这个过程可能要阻挡相当一部分人。如果什么时候做游戏和写文章画图做视频一样简单,那么游戏行业可能要被重新定义,目前而言游戏开发是最复杂的一个领域。
在开发箭头消消消这个游戏前,你得知道这个是一个什么样的游戏,那最好先玩一遍,只要不傻也不难总结出这个游戏的核心玩法特点。为了简化实现,假设所有的箭头方块都是一样的大小。
那我们可以先准备一个带箭头的3D立方体模型。
而我不知道怎么获得3D立方体,第一时间想到用3D混元去生成一个,可惜结果并不如人意。
生成了两轮,差不多有一个可以满足需求,但是,模型下载下来7M多,一个这样简单的模型大的吓人。那我想要压缩一下,但是搜了一圈也没有找到非常简易的工具,对一个没有任何3D建模经验的人来说,简直就是抓瞎。有的教程建议用blender压缩,看了几个教程,感觉也没有那么容易上手。那我就不如用blender自己制作一个。
教程可以参考一下这个https://www.bilibili.com/video/BV1pt4y1s7hc/?spm_id_from=333.337.search-card.all.click&vd_source=f28458a1f0d69b49335fd021738bbcd1
最后经过我的灵魂画手,得到了一个3D模型。
导出为glb文件,大小66k,可以接受。
那么接下来需要把模型导入到游戏引擎,具体步骤可以参考下面
得到模型之后,导入游戏引擎中。
直接拖到资源管理器,效果跟上图一样。
然后再拖到上面的层级管理器中,效果跟下图一样。
这样就在场景编辑器中看到了我的灵魂3D盒子了。
接下来制作预制体
红色拖到蓝色,就得到了cube1预制体,预制体的概念,可以理解为一个可以复用的物体。
然后吩咐一下AI写代码。
命令:cocos creator 3.8中,新建一个文件,多个立方体规则堆叠在一起,一共360个,6*6*10,每个立方体不重叠,紧密挨着一起。我已经创建好了一个box预制体。
得到核心代码
将这个脚本组件绑定到容器,没有容器就先创建一个空的节点
添加组件后,将预制体设置为脚本的属性
第一步搞定,预览,完美。
第二步,容器可以旋转,让AI继续干活。
命令:这个box组成的几何体,可以通过touch,360度旋转
具体代码我不贴了,看一下效果
上面的所有立方体是同一个方向,需要随机打乱一下。
一个方块一共六个面,那就是可以随机六个方向,继续让AI输出。
核心逻辑就是设置每个方块的角度。
接下来要实现箭头box的交互逻辑。
第一步给box添加点击事件,之前有文章讲过,不深入写了。具体看这篇文章
用了DeepSeek、Kimi等4大国产AI工具后,我发现了AI的局限性
还是吩咐AI,实现原理主要利用射线检测
实现的效果如下
接下来就是判断箭头方向,如果没有阻碍,就可以向前移动,然后消失。
六个面,有六个运动方向。
箭头默认方向是Y(上)的正方向。
定义方向之后,随机每一个方块的初始方向,然后旋转方块。
有了方向还不够,还需要有运动向量,就是点击方块后运动的方向,同时也要结合向量判断前方是否有阻碍。
看效果
改变位置写在update方法中,每一帧计算一下位置。
仔细看图片你们可能会发现,上面稍微旋转了一下整个场景。导致有一个方块无法移动了。
所以判断障碍还有点问题,问题出障碍检测方式上。目前的检测方式是:
检测当前立方体在前进方向上是否存在障碍物。首先,获取立方体当前的前进方向。然后,它获取立方体在游戏世界中的当前位置。位置和方向创建一个射线(geometry.Ray)。这条射线从立方体的当前位置出发,沿着其前进方向发射。它使用 Cocos Creator 的物理系统发射这条射线,并检测路径上最近的碰撞物体。
思考了一下,通过射线判断,并在update中更新位置好像不是最佳的解决办法,而且移动的距离也不是方块大小的整数倍。
换一种解决办法,记录每一个方块的xyz坐标,在当前点击方块的前进向量,依次判断有没有空位,如果没有则可以移动到该位置,否则就移动到上一个位置,这样通过矩阵的运算就可以快速判断方块可以移动到哪里去,移动使用tween完成动画效果。
看效果,这一下就非常完美了,没有任何bug,移动过程也非常顺畅。
到这里,核心的玩法逻辑已经初步完成了,消除整个方块则顺利过关。
整个过程代码完全由AI完成,用的是阿里的大模型Qwen Coder,之前我也分享过如何使用。
时间用得最多地方还是调试程序。
如果让我自己写,保守估计5天。代码量900行左右,现在AI半天帮我搞定。
当AI选择的实现方式并不能很快达到目的时,我可能会没有太多耐心,只能推倒部分逻辑重新开始新的尝试。
有AI的帮助,可以更快的落地更多的解决方案,这是这段时间的一点体会。如果对效果不满意,可以让AI立即会滚到某个版本。
以上就是今天的分享。
想要看原始工程和详细教程,欢迎加入社群免费获得。
以上,如果你觉得不错,可以随手点个赞、在看、转发,你的鼓励对我非常重要。~谢谢你看我的文章。
欢迎关注我的公众号,获取更多游戏开发知识和游戏源码,手把手教你做游戏。
更多干货
如果你对小游戏感兴趣,并且想要试试,这里有我的经验教训,希望你少走弯路。
如果想获取更多游戏开发资料、源码,素材,游戏模板,欢迎加入社群交流讨论,小游戏开发实战营,1v1交流。

