要想创建一个数学表达式节点,请 右击 图表并从关联菜单中选择 Add Math Expression(添加数学表达式)... 。

数学表达式节点就像一个合并的图表。它是一个独立的节点,您可以 双击 它来打开构成其功能的子图表。 最初,该名称/表达式是空的。任何时候,当您重命名该节点时,都将会解析新表达式并生成新的子图表。
要想重命名该节点,并更新子图表,请 右击 该节点,并选择 Rename(重命名) 。
比如,您可以使用以下表达式来重命名该数学表达式节点:
(1+x)*sin(myVar)-2.4/rand()
这将会更新该数学表达式节点,使其具有两个浮点型输入 X 和 MyVar ,及一个浮点型输出。

如果您 双击 具有该表达式的节点,那么您将看到以下这个子图表:

子图表是根据以下规则创建的:
- 字母名称 (以字母开头的符号) 应该变为数学表达式上的变量、输入引脚,或者函数调用。上面的示例中字母名称有: x 、 sin 、myVar 和 rand 。
- 如果一个字母名称和BSlueprint中的一个现有变量一样,那么它将变成一个变量获取节点 (也就是如果蓝图已经具有了 myVar 变量)。
- 如果字母名称后面有一个左括号(比如 sin( 和 rand( ),那么它将会变成一个函数节点。
- 如果之前的两种情形都不符合,那么该字母名称将会变成数学函数节点上的一个浮点型输入。
- 如果该名称匹配节点上现有引脚的名称,则还将被用于输入。
- 数值常量将总是变成引脚输入。它们自身永远不会创建一个节点,但是会使用它们来填充其他节点的输入文本域。
- 数学运算符(像+ 、*、 -) 会变成函数节点。
- 和数学运算中的处理一样,括号内的表达式具有优先权,需要优先计算。
变量
变量命名非常灵活,但是记住以下几点非常重要:
- 变量名称本身可以包含数字,但是不能以数字开头。
- 变量名称不能和隐藏的蓝图变量名称一样。
- 确保您正在使用正确的变量类型。比如, boolVar+1.5 就不是一个有效的表达式。
运算顺序
运算顺序如下所示(按照优先级从高到底的顺序):
- 括号内的表达式
- 阶乘
- 指数
- 乘除法
- 加减法
可用的蓝图函数
代码函数库中的蓝图纯函数应该都是可用的。这包括:
-
三角函数 (sin/cos/tan、asin、acos, 等):
sin(x)
-
区间限定函数 (min, max, clamp,等):
clamp(y,0,20)
-
四舍五入函数 (floor, fceil, round等):
round(z)
-
指数函数(square, power, sqrt, loge, e/exp等)
某些函数具有多个经常使用的名称。为了处理这个问题,同一个函数或节点会有几个相关联的别名。一些示例:
- Power(幂数)别名: power, pow
- 三角函数 (asin/arcsin, acos/arccos, 等)
因为您正在输入函数,而不是连接引脚,所以请确保输入正确的数值及参数类型。如果数值和参数类型不匹配,那么该数学该表达式节点 将会显示一个错误。
基本结构体类型
在数学中,有一些经常要用到的基本结构体: 向量、变换等。您可以在表达式中轻松地创建及操作这些类型。
-
vector 关键字生成一个MakeVector节点:
vector(x,y,z)
-
rotator 关键字生成一个MakeRotator 节点:
rotator(x,y,z)
-
transform 关键字生成一个MakeTransform 节点:
transform(vec(x,y,z), rot(p,y,r), vec(6,5,4))
正如某些函数有别名一样,向量和旋转量也有别名。
-
Vector(向量)别名
vector, vec, vect
-
Rotator(旋转量)别名
rotator, rot
支持的操作符
支持以下所有操作符,这些操作符可以同逻辑操作符和比较操作符结合使用,来创建复杂的表达式。
-
乘除法操作符:
*, /, %
-
加减法操作符:
+, -
-
关系操作符:
<, >, <=, >=
-
等于:
==, !=
-
逻辑操作符:
||, &&, ^
不支持的操作符
目前,不支持以下操作符。
-
条件操作符:
?:
-
位操作符:
|, &, <<, >>
-
一元前缀操作符:
+, -, ++, --, ~, ! 等。
-
后缀操作符:
++, --, [] 等