godot2D游戏教程系列二(14)

前言:

完成目标:

实现草丛"外观随机 + 动画速度随机",让每一片草看起来更自然。


一、随机动画速度

  • 在 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个元素也设置为默认第一个草丛的参数就好了
  • 然后我们希望每次都能生成相同的草丛就需要我们,为随机数生成过程设置固定的种子值
相关推荐
海绵宝宝的月光宝盒1 分钟前
14-AutoCAD-阵列命令应用与案例实战(AR)
经验分享·笔记·自动化·课程设计·制造·学习方法·cad
小嘉丶学长1 小时前
Day14 · 字典与集合
java·开发语言·网络·python·学习·1024程序员节
白山编程大哥1 小时前
接口幂等性是什么?如何设计?
笔记
ACP广源盛139246256731 小时前
6 盘位存储扩展方案选型笔记:YLB3116 @ACP评估记录
笔记·硬件架构·硬件工程·国产芯片
小李不想当小白1 小时前
SPI通信外设与W25Q64 (硬件SPI)(STM32标准库学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习·嵌入式
weixin_448119944 小时前
Datawhale Jev Cookbook 202610 笔记3
笔记
姚瑞南4 小时前
【PRD】招投标商机雷达爬虫系统
人工智能·经验分享·笔记·爬虫·产品运营·产品经理
Gnevergiveup4 小时前
ATT&CK红蓝对抗实战指南-Windows安全基础
笔记·网络安全
驱动小百科5 小时前
国产3A游戏《影之刃零》正式发售:售价及电脑配置要求介绍
游戏·影之刃零·影之刃零配置要求·影之刃零下载·影之刃零售价
adinnet20265 小时前
电商客服对话知识库的自学习闭环与质量演进机制
学习