虚幻引擎 Random Float in Range 节点

Random Float in Range是UE5蓝图中生成随机数的核心节点。它就像一个骰子,可以在你设定的最小值(Min)和最大值(Max)之间,掷出一个带小数点的“随机数”。我们来看几个最实际的应用案例。

🎯 第一章:从0开始的随机世界

核心节点:Random Float in Range

  • 官方定义:在指定的“最小值”(Min)和“最大值”(Max)之间生成一个随机浮点数。

  • 输入 (Inputs)Min (Real, 实数) 和 Max (Real, 实数)。你需要设定随机数的边界。

  • 输出 (Outputs)Return Value (Real, 实数),即生成的随机结果。

🌰 案例一:随机生成一个“温度”读数

想象你的游戏里有一个温度计,需要每隔一秒更新一次随机的读数。
操作步骤:

  1. 创建变量:在你的蓝图(例如Level Blueprint)的“My Blueprint”面板,点击“+”图标,新建一个名为“Temperature”的 Float(浮点数)类型变量。

  2. 添加定时器:在Event Graph中,右键添加Event BeginPlay节点。从它的执行引脚(白色箭头)拖出,搜索并选择 Set Timer by Event 节点。将该节点的Time参数设为 1.0(即1秒触发一次)。

  3. 编写随机逻辑:右键添加Random Float in Range节点,设置Min为 10.0Max为 30.0。然后,添加Set Temperature节点。

  4. 连线

    • 将定时器的Completed执行引脚,连接到Set Temperature节点的执行输入。

    • Random Float in Range节点的返回值连接到Set Temperature节点的Temperature输入。

  5. (可选)输出到屏幕:添加一个Print String节点。将Set Temperature的执行输出引脚连接到它。从Set Temperature节点的返回值拖出,搜索并添加ToString (float)节点,然后连接到Print StringIn String输入。这样,游戏的左上角就会每隔1秒显示一次随机生成的温度。

这个案例模拟了传感器不断输出随机数据的过程,是理解随机值如何动态改变变量状态的绝佳起点。

🌰 案例二:一颗无限反弹的乒乓球(反弹时添加随机Y轴偏移)

这个案例来自一个经典的Pong游戏教程,展示了当球碰到球拍时,如何给它一个随机的反弹效果。
操作步骤:

  1. 准备事件:在你的球体蓝图中,添加一个 Event Hit 节点。当球体(启用了碰撞的Actor)碰到任何物体时,这个事件会被触发。

  2. 生成随机偏移量:添加一个Random Float in Range节点。设置Min为 -750.0Max为 750.0。这个值将作为球的新速度Y分量。

  3. 执行速度设置:添加Set Physics Linear Velocity(设置物理线性速度)节点。

  4. 连线

    • Event Hit的执行输出引脚,连接到Set Physics Linear Velocity的执行输入。

    • 右键点击Set Physics Linear Velocity节点的New Vel(新速度)输入引脚,选择 Split Struct Pin(拆分结构体引脚),将其拆分为X、Y、Z三个单独的输入。

    • Random Float in Range节点的返回值连接到New Vel Y引脚。

  5. 连线(续):将 Event Hit 节点输出的 Other 引脚,连接到 Cast To player_paddle 节点的 Object 输入,并让它根据碰撞对象的类型执行不同的逻辑,比如当球碰到左侧球拍时,Y轴偏移量为正(向右反弹);碰到右侧球拍时,偏移量为负(向左反弹)。

专业提示
Set Physics Linear Velocity 是用于模拟物理运动的Actor的关键节点。Split Struct Pin在需要单独设置向量(Vector)的各个分量(X, Y, Z)时非常有用。

🌰 案例三:10%暴击率的逻辑

假设你需要一个10%几率的随机事件,比如“暴击”或“稀有掉落”。
操作步骤:

  1. 生成0-1随机数Random Float in Range节点,设置Min为 0.0Max为 1.0

  2. 设置判断分支:添加一个Branch(分支)节点。从Random Float in Range的返回值引脚拖出,搜索并添加一个>=(大于等于)节点,设置其第二个参数为 0.9。然后,将这个比较的结果连接到BranchCondition输入。

  3. 连线执行逻辑:将BranchTrue执行引脚连接到“触发暴击”的逻辑,将False执行引脚连接到“普通攻击”的逻辑。

这个模式是将[0, 1]区间均匀分布的随机数,转化为概率事件的核心方法。

🧠 第二章:从“随机”到“可控的随机”

普通的Random Float in Range每次都独立计算,上一次的结果不会影响下一次。但在很多情况下,我们需要更可控的随机。

进阶节点:Random Float in Range from Stream

核心概念——随机流 (Random Stream):你可以把它想象成一个有内在运行规律的随机数“生成器”。通过指定一个“种子”(Seed),即使游戏每次重新开始,你也能得到完全相同的随机序列。这在调试Bug、制作重播系统或确保所有客户端看到的随机效果一致时非常有用。

操作指南:

  1. 创建随机流变量:在“My Blueprint”面板中,新增一个变量,将其类型设置为 Random Stream(随机流)。

  2. 使用节点:在蓝图中,使用 Random Float in Range from Stream 节点。将 Stream 输入连接到您创建的 Random Stream 变量,并设定 Min 和 Max 值。

  3. 控制随机性:这样,每次从这个流中取数,都会按照该种子确定的序列生成,确保了在不同运行或不同用户间的结果可复现性

🛠️ 第三章:其他实用随机节点简介

  • Random Float:无需设置范围,直接在 0.0 和 1.0 之间生成随机数。可看作是Random Float in Range的一个特例(Min=0, Max=1)。

  • Random Integer in RangeRandom Float in Range的整数版,用于生成指定范围内的随机整数。

  • Random Bool:按照50%的概率随机输出True(真)或False(假),常用于简单的开关逻辑或概率事件。

  • Random Array Item:从一个数组中随机取出一个元素,是随机选择物品、音效或特效的完美工具。

  • MultiGate (随机模式):将MultiGate节点的Is Random属性设为True,它就会随机选择输出引脚。配合Loop可实现可持续的随机输出,常用于构建随机行为的有限状态机。

💎 总结

Random Float in Range是UE5随机化系统的起点。它既可以单独使用制造纯粹的随机效果,也可以与随机流搭配,实现对随机结果的掌控。

感谢您的来访,获取更多精彩文章请收藏本站。

THE END
喜欢就支持一下吧
点赞8 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容