本篇教程将为大家介绍一些比较常用的表达式的使用方法, 如果您还不清楚表达式的概念,可以参阅表达式
点我下载教程工程
int()用于将指定值变成整数类型,一般在下面两种情况下会有使用
random(a,b)会生成一个随机值(可以是小数),随机值的范围在a和b之间,包含a但不包含b。
例如:random(0,10) 可以生成0、2.5、9.9等,但是不会生成10。可以搭配其他表达式,例如【int(random(0,10))+1】产生1-10的整数
choose表达式与random类似,根据参数随机选出一个值。 choose可以写多个参数,系统会自动从参数中随机选择一个返回。 例如:choose(1,3,5,7,9) 会随机从这个5个数字中返回一个值。
choose的参数也可以是字符串: choose(1,“a”,2.4,“Hello”)
distance表达式用于计算两个坐标之间的直线距离,前两个参数代表了对象A的坐标,后两个参数为对象B的坐标。 需要了解的是,A到B的距离等于B到A的距离,所以写成distance(B.x,B.y,A.x,A.y)得到的数值也是一样的。
clamp表达式用于限制值x的范围,让其不会小于min,不会大于max。
当x小于min时,返回min,当x大于max时,返回max,当x位于min和max之间时,返回x。
例如:
clamp表达式可应用的领域很多,只要希望将一个值限定在指定范围内,都可以使用该表达式。 例如限制生命的范围0~100、限制对象移动的距离等。
线性插值lerp表达式用于数值A到数值B的平滑改变,可以用在对象移动、镜头移动、大小更改等涉及数值改变的地方。
大致原理为,lerp根据X的值,在a和b之间返回一个特定的值。 x是0~1之间的数字,可以理解为返回值在a和b之间的比例。 x是0时,返回a。x是1时,返回b。X是0.5时,返回a和b中间数字。
b通常是最终的目标数值,a是当前的数值。 将lerp(a,b,x)的返回值赋值到a中,使a不断发生改变,因此a和b的距离也不断发生改变。
最初,a和b的距离最远,lerp所返回的值变化也很大,当a和b的距离不断缩小,lerp返回值变化逐渐变小,最后趋近于无变化(使用lerp时,返回的值不会等于b,只会无限接近b)。
具体使用:精灵A.x=lerp(精灵A.x,500,dt*10)
x的值,通常我们使用dt*指定值,dt代表了当前帧在这一秒内占用的时间,如果不好理解,可以当做一个指定的小数,例如:1/60。 dt的详细说明会在下面教程中讲到。
lerp可以搭配clamp使用,在镜头控制教程中有详细说明
tokencount返回通过指定分隔符分割后的字符串数量
tokenat返回通过指定分隔符分割后,指定序号的字符串
参数str是要进行分割的目标字符串
index是已经分割的字符串列表下标,下标从0开始。
split是字符串分割符,表达式将通过该分割符对字符串进行分割。
例如:tokenat(“a,b,c,d,e”,2,",") 代表通过英文逗号",“对目标字符串进行分割,并返回下标为2的分割结果。 字符串通过逗号会被分割成a b c d e ,其中c为下标为2的字符,所以表达式将返回c。
而tokencount(“a,b,c,d,e”,”,")返回5, 因为逗号将字符串分割成了5份。
此外,如果split参数填写空字符串:"",代表将每个字符单独分割,例如"a,b,c"将被分割成:“a” “,” “b” “,” "c"5个字符
使用字符串分割表达式,可以实现仅通过一个变量来存储多个信息,在本次教程实例中,用于存储需要生成的对象名称