【Unity项目实战】手把手教学:飞翔的小鸟(7)障碍对象池

        承接上一篇:【Unity项目实战】手把手教学:飞翔的小鸟(6)添加障碍,我们已经生成了一个障碍物柱子,并且使得小鸟在越过柱子之后自动获得一分,接下来将继续讲解障碍物的随机生成。

一.脚本控制

        障碍物对象池的实现方法和背景的实现方法差不多,在对象池池中会有5组(当然可以有6、7、8、9组都可以)随机位置障碍物柱子,分别从背景的右边开始出现,等到柱子移动到背景左边超出主角视线时,将柱子收回到对象池中,重复在右边出现。其实说白了就是5组柱子交替出现和回收的过程。说完原理,我们就可以在GameControl对象中新建一个脚本(命名为:ColumnPool)来专门控制障碍物对象池:

        首先在初始化对象池:

        随后我们往对象池中填充障碍物:

         下一步,我们要在Update函数中添加计时器,用来检查小鸟前面是否需要重新生成柱子,这里就需要两个变量,一个变量(命名为:timeSinceLastSpawned)用来记录生成上一个障碍物已经过去多久了,一个变量(命名为:spawnRate)用来记录每隔多长时间(例子的时间可以随意改)就生成一个障碍物:

         下一步,在Update函数中开始计数,当游戏还没结束的同时timeSinceLastSpawned也已经超过了4f之后,就开始生成障碍物:

         生成的障碍物中我们设定为固定出现在背景外的右边,然后从右往左运动,直到来到背景外的左边回收资源,所以X坐标可以固定不变都是背景外的左边,而Y坐标则可以随机生成,故我们还需要几个变量来控制障碍物出现的位置:

         然后当障碍物条件满足时,重新计时并且生成随机Y轴坐标:

          获取到一个固定的X坐标和随机的Y坐标,我们就可以将障碍物对象池中的坐标都进行指定了:

         编程完成后,我们回到Unity中去,并将柱子对象拖拉到GameControl的columnPrefab中,实现绑定:

         拖拉完成后,我们保存下项目存档,把调试用的柱子拉出窗口外,以免挡住了小鸟的去路:

        并且开始运行游戏,查看随机的Y坐标是否合理:

        运行起来,你就会发现,有些柱子的坐标过高了,这时候就需要手动去调整下随机Y坐标的范围,具体调成什么样就看你自己了:

 

        调试成我们想要的结果后,整个项目就已经结束了,感谢各位一直以来的跟踪和支持~整个项目都是我百忙之中抽空更新了,拖拉了很久,但最后还是完成了,也希望这个教程对你们有所帮助~ 

猜你喜欢

转载自blog.csdn.net/qq_41884002/article/details/130659774