引言:接上一篇,代码有了,还要有游戏资源,我用AI自动创建预制体的时候不能用,不知道是什么问题,有知道的小伙伴分享一下,相信随着软件的迭代,这个问题会解决。看懂这一篇还是要有一点creator使用经验的,以及代码的阅读能力,没有的话可以试试让AI帮你分析一下每个文件的作用会好理解很多。我这边看一下代码大概知道是什么逻辑以及要生成什么样的预制体,以后AI完善了,让它根据代码生成对应的预制体,应该不是问题。就不多解释creator的一些操作了,详细文档可以看官网
一. 创建砖块,板和球
1.绑定LevelManager.ts相关的资源
找到LevelManager.ts文件,至于为什么会第一时间看这个文件,就需要有一定的代码阅读能力,或者你让AI帮你注释都写上,就容易理解一些。每个文件的@property(xx)是我们重点关注的点,是要和creator绑定上的,绑定好就会开始执行代码逻辑。

从代码的名字上看,我们需要绑定砖块,砖块容器,球,接球的板,所以我依次创建了3个预制体

图片都是用默认的先临时处理,然后把levelmanager脚本绑定到主场景上,绑定好对应的物体,注意我这里把主场景的默认的光照节点和相机节点删除了,创建了一个Canvas,主要是参考了之前项目的结构,不一定是标准的做法,还把场景的skybox属性的钩取消了,不需要天空盒,模式选2d。在Canvas下面添加自定义脚本,点中编辑右边属性面板最下面有个添加组件按钮,然后选自定义脚本,就把这个脚本绑定上了,场景启动时候会自动执行里面的onLoad函数,执行对应的逻辑代码。

- 让挡板和小球动起来
这里涉及到物体引擎的使用,就是球碰到墙壁,挡板,砖块会自动反弹,这里AI已经为我们生成了默认的碰撞后的逻辑代码,主要是onBeginContact里面的逻辑,可以自定义具体逻辑,碰撞后反弹的一些逻辑是物理引擎作的工作,我们不需要写任何代码,只要设置物体的碰撞包围体大小就可以了,主要添加钢体组件和包围体组件,设置一些系数就可以了。我首先添加了3面墙,看了GameManager.ts的代码,有个BottomBoundary节点,这个是用来判断小球是否掉到地面的区间,用来判断是否失败的辅助节点,我也顺便加上了,又在MainScene的Canvas添加GameManager.ts的脚本,绑定相关节点。然后在所有需要碰撞检测的物体里面添加物理组件,点击相关节点在添加组件里面添加RigidBody2D组件(钢体)和Colliders组件(包围体)。如下图:

具体的参数说明可以参考官方文档,我这里主要是把小球设置成动态的DYNAMIC类型,墙设置成STATIC类型,挡板,砖块设置成KINEMATIC类型,重力系数都为0。这里重点留意把挡板和小球的包围体组件里面的Restitution(反弹系数)设置成非0,之前这里没注意,小球碰到墙后不会反弹,Friction(摩擦力)也要非0,挡板移动时碰到小球可以改变小球方向。
加完后效果如下:

然后把小球,挡板,砖块的对应代码也绑定上,对应关系如下

看了一下代码,按空格键开始游戏,我按了一下,小球可以运动了,碰到墙面和挡板后都会反弹,掉到地上重新开始,但是速度太快,我看下代码,AI在声明速度变量时候直接赋值,这样在编辑器上改了速度值也没有效果,我直接放到onLoad初始化了,截图如下

看了代码按空格键开始,A和D左右移动挡板,最基础的逻辑实现了。
- 创建砖块
这里AI是用代码创建的砖块,个人还是喜欢在编辑器里面创建,暂时按它的来,我按它的砖块BrickWithHealth.ts的代码的结构给砖块加了血条和血量显示,效果如下:

运行一下,游戏出来了

发现销毁第1个砖块后报错,我让它帮我查看问题,它帮我在销毁的时候先禁用物理引擎,然后延迟销毁

我之前做过打砖块游戏好像没有这个问题,然后第2个砖块销毁又出问题了,我又让它改,自动改好了,但是血条偏高的问题我让它改,它没改出来,我暂时也找不到哪里问题。还有我之前球碰到挡板后用默认的物理引擎功能处理反弹就可以了,它这边要用代码修改球的飞行角度,不修改就垂直运动了,也不知道啥问题,就先这样了,基本的逻辑跑起来了。
总结:这里差不多花了6.5个小时,加上次花了7个多小时,不包括安装软件的时间,差不多一个工作日。没有creator使用经验的感觉不好搞定,最好自己先把官方网站的第1个例子跑通,做再简单一点游戏,比如不需要用物理引擎的游戏,类似那些回合制的不需要碰撞检测的游戏。这里我基本没写代码,有问题AI也能自动帮我修复,但是游戏复杂了,感觉全靠AI解决还是比较困难。有项目经验的还是用自己的框架好,AI辅助,比如这个游戏它的结构是AI用代码创建砖块,没有用编辑器摆放位置更方便,如果自己的框架,就可以按自己的思路灵活实习,全部让AI生成的话,一开始也不可能说的那么明白,把所有的要求都说清楚。
这里打算先暂停开发这个游戏了,还是用自己的成熟的框架,让AI辅助更好。后面有想到更有意思的小游戏,会考虑一边制作,一边更新开发流程,和大家分享。
游戏交QQ流群:1105293963