前言:
- 我是根据b站上的视频进行学习,并且总结写下笔记,然后做此分享。笔记非常详细以至于你可以通过查看文章进行快速学习并且制作出游戏出来。当然视频学习的链接我也放在下面了:
- 视频学习:https://www.bilibili.com/video/BV1Nd25BNEA6?spm_id_from=333.788.player.switch\&vd_source=078d5d025b9cb472d70d8fda1a7dc5a6\&p=15
- 音频/美术资源包下载: https://pan.baidu.com/s/1mY05SbG3XFUpn-qiKxDRhw?pwd=b6bg
完成目标:
实现草丛"外观随机 + 动画速度随机",让每一片草看起来更自然。
一、随机动画速度
- 在 Tween 动画代码中加入速度比例参数
- 每个草丛实例生成时随机一个速度值
- 让摇摆快慢不同
效果:草丛不再同步晃动,更真实。
二、随机草丛外观
- 给 Sprite2D 单独添加脚本
random_region - 使用
Rect2(位置 + 大小)控制显示区域 - 创建一个
Rect2数组,作为候选草丛区域 - 在检查器中添加 3 个元素
- 设置大小统一为 48×32
- 分别填写三个草丛在素材图中的位置
- 运行时随机选一个
Rect2 - 赋值给
region_rect属性
效果:每个草丛都会随机显示不同样式。
三、控制出现概率
- 想让第一种草更多出现
- 就在数组里多添加几个相同的 Rect2
- 等于提高它被选中的概率
四、固定随机结果(可选)
- 设置随机数种子(seed)
- 每次运行生成相同草丛分布
最终效果:
- 草丛外观随机
- 摇摆速度不同
- 可以控制出现比例
- 可选择固定或完全随机
草地从"复制粘贴感"升级为"自然生态感"。
实现过程
- 我们来实现随机化草丛的外观,不同的外观和不同的动画速度比例,然后我们来到草丛场景的脚本代码中。
- 我们在我们的补间动画那里加行代码控制草丛摇晃速度的比例

- 我们随机从这前三片中选取一片作为草丛的外观

- 我们专门给2d精灵节点添加一个新的脚本代码,把脚本重命名为random_region

- 怎么改呢?这里就要用到我们的rect属性,这个rect属性的类型叫做rect2,它内部封装了两个vector2值,第一个vector2用于表示位置,第二个vector2用于表示大小,我们编辑区域的时候这个rect就会做记录。这样我们就可以创建一个rect2数组,用于多个草地的候选区。然后我们可以随机选择其中一个,并将其分配给sprite2d节点的rect属性

- 我们在代码中创建这个数组然后公开到检查器中,并且在检查器中进行创建3个元素

- 然后我们的草丛区域是48*32所以就通通修改大小

- 然后针对三个草丛的不同位置进行修改

- 小提示,我们鼠标悬停到检查器的属性就可以看到那个属性在脚本代码中的实际名称是什么,比如说这个rect属性的实际名称是region_rect

- 然后我们创建一个赋值的代码。将这个rect属性进行赋值组内随机的一个草丛外观

- 然后我们在使用游戏启动时候进行设置


- 然后我们希望默认的第一个草丛占据大多数,我们就可以将数组再增加2个元素,然后这2个元素也设置为默认第一个草丛的参数就好了

- 然后我们希望每次都能生成相同的草丛就需要我们,为随机数生成过程设置固定的种子值