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个元素也设置为默认第一个草丛的参数就好了
  • 然后我们希望每次都能生成相同的草丛就需要我们,为随机数生成过程设置固定的种子值
相关推荐
正牌强哥2 小时前
别再用天价软件做量化研究了:我开源了一个全流程因子分析平台FactorHub
学习·开源·量化交易
执笔论英雄2 小时前
【大模型推理】cudastream 学习
linux·运维·学习
崔高杰2 小时前
训练数据选择又有新方法了?——两篇文章的阅读笔记 Less is Enough和 OPUS
人工智能·笔记·机器学习
爱吃奶酪的松鼠丶2 小时前
LangGraph 实战笔记:用 AI 发起流程应用
人工智能·笔记
YLXA2 小时前
1.helle_cuda学习
linux·学习·算法
小付同学呀2 小时前
C语言学习(九)——C判断三元运算符
c语言·开发语言·学习
撩妹小狗2 小时前
DIY无人机--升压降压电路
学习·diy·原理图·升压降压电路
YYYing.3 小时前
【Linux/C++多线程篇(一) 】多线程编程入门:从核心概念到常用函数详解
linux·开发语言·c++·笔记·ubuntu
见青..3 小时前
攻防世界-web:php2、easyupload
笔记·安全·题解