Affector
ImportStatement:
InheritedBy:
Properties
enabled : bool
groups : list
once : bool
shape : Shape
system : ParticleSystem
whenCollidingWith : list
Signals
void affected(real x, real y)
DetailedDescription
基本的Affector不会改变任何属性,它仅仅用于在粒子满足一定条件时发送信号。如果一个affector定义了尺寸,尺寸仅仅影响粒子在屏幕上显示的位置和尺寸。
Affectors和另一个粒子系统元件,有不同的执行特征。特别的一点,Affectors做了一些简化,试图保持实时仿真或更快。在系统中运行Affectors时,不规则帧的时间成长巨大(大于1秒每帧)。这促使Affectors在运行时偷工减料,这样Affectors运行的更快但模拟的不准确。同时,当系统有多个Affectors时,它们执行的顺序是没有保证的。在模拟巨大的时间变化时,相对较小的时间变化,模拟的结果有更大的转变。在某些硬件系统中,数量巨大的粒子(成百的)可能正常运行,但在相对性能较低的硬件上,我们只能期待更加糟糕的运行结果。
PropertyDocumentation
enabled : bool
如果属性值为假,则affector不会影响任何粒子。这通常用于有条件的打开或关闭一个affector。默认值为真。
groups : list
一个被影响的粒子组,假如空,它将影响所有的粒子。
once : bool
如果设置为真,那么affector将在粒子一生中只影响一次。affector一般产生连续时间的影响,在这种情况下,它影响粒子一秒。默认值为假。
shape : Shape
如果size被定义,shape能用于影响非矩形的部分。
system : ParticleSystem
这是被元件影响的系统。如果Affector是粒子系统的直接子元件,系统将自动关联。
whenCollidingWith : list
如果这里指定粒子组,那么Affector将会让粒子和whenCollidingWith中的粒子组进行匹配,如果匹配成功,Affector将触发。这不同于groups属性,groups属性选择那些粒子被影响。而这个组决定了影响的条件。如果遇到标准变化(包含范围内的粒子,粒子的形状变化等)。Affector将测试粒子,看它是否对粒子感兴趣。测试的资源在whenCollidingWith中。
SignalDocumentation
void affected(real x, real y)
当粒子选择被影响时触发。如果粒子没有被Affector选择影响它,则不会触发。在Affector没有任何内容时(如Affector{}),这个信号将发送给所有连接它的粒子。允许我们在信号触发时通过Affector::onAffectParticles执行任意代码。作为每个粒子执行的java脚本,不推荐应用于大容量的粒子系统。
x,y是粒子当前的位置,连接的程序为onAffected。