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个元素也设置为默认第一个草丛的参数就好了
  • 然后我们希望每次都能生成相同的草丛就需要我们,为随机数生成过程设置固定的种子值
相关推荐
世人万千丶13 小时前
解决鸿蒙方向的Flutter框架版切换问题-当前最新版本3.35.8——工具切换与命令切换
学习·flutter·elasticsearch·华为·harmonyos·鸿蒙
迷路爸爸18013 小时前
Docker 入门学习笔记 01:它到底解决了什么问题,镜像和容器又是什么
服务器·笔记·学习·docker·容器
talen_hx29613 小时前
《零基础入门Spark》学习笔记 Day 12
笔记·学习·spark
observe10113 小时前
ARM学习之ADC
学习
禹中一只鱼13 小时前
【ADB 关键命令与配置速查笔记】(自用复盘版)
笔记·adb
北风toto13 小时前
Vue多文件学习项目综合案例——面经基础版,黑马vue教程
javascript·vue.js·学习
yangyanping201081 天前
Go语言学习之对象关系映射GORM
jvm·学习·golang
网络工程小王1 天前
【Transformer架构详解】(学习笔记)
笔记·学习
北风toto1 天前
前端CSS样式详细笔记
前端·css·笔记
Heartache boy1 天前
野火STM32_HAL库版课程笔记-手动建立工程模板与CubeMX后续用法(重要)
笔记·stm32·单片机·嵌入式硬件