一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第 15 天,点击查看活动详情。
📒博客首页:何名取 的个人主页 - 文章 - 掘金 (juejin.cn)
🎉欢迎关注🔎点赞👍收藏⭐️留言📝
❤️期待一起交流!
🙏作者水平很有限,如果发现错误,求告知,多谢!
🌺有问题可私信交流!!!
Affector影响器的子类型
前言
前面已经简单介绍了Affector影响器和其基础类型的属性,并且使用基础类型的属性进行了示例。另外,Affector影响器还有八个子类型。本节将对这几个子类型进行介绍和示例。
- Age
- Attractor
- Friction
- Gravity
- GroupGoal
- SpriteGoal
- Turbulence
- Wander
Age
改变粒子的生命,通常的用法是让粒子提前过期。Age影响器有时也被称为“Kill”影响器,因为使用默认参数,它将立即终止它所影响的所有粒子。
属性 | 类型 | 描述 |
---|---|---|
advancePosition | bool | advancePosition决定影响器所做的模拟老化是否包括位置、速度和加速度。如果advancePosition为false,则位置、速度和加速度将保持不变,只有其他属性(如不透明度)将在模拟中推进到粒子生命周期中该点的正常位置。当advancePosition设置为true时,速度和加速度也会提前到粒子生命周期中通常的位置,使其在屏幕上的位置提前。 |
lifeLeft | int | 粒子具有的生命量。受影响的粒子将前进到生命中的一个点,在那里它们将剩下这么多毫秒可以生存。 |
代码示例
此处的代码片段定义了一个矩形区域,粒子经过该区域时将加速粒子的死亡,将粒子的寿命缩短到0.08毫秒。
Age {
anchors.fill: parent; system: particles
lifeLeft: 80; once: true; advancePosition: false
}
效果展示
从图中可以看到,从上方往下的粒子经过矩形块后,被Age影响器更改了生命值,加速消失。
Attractor
将粒子吸引到一个特定的点。注意,这个元素的大小和位置会影响它所影响的粒子。吸引到的点的大小总是0x0,并且该点的位置由pointX和pointY属性指定。
注意,吸引器有标准的Item x,y,width和height属性。像其他影响器一样,这些代表受影响的区域。它们不代表0x0点,这是吸引力的目标。
属性 | 类型 | 描述 |
---|---|---|
affectedParameter | AffectableParameter | 粒子的哪些属性直接受到影响。 Attractor.Position Attractor.Velocity Attractor.Acceleration |
proportionalToDistance | Proportion | 粒子到点的距离如何影响引力的强度。 Attractor.Constant Attractor.Linear Attractor.InverseLinear Attractor.Quadratic Attractor.InverseQuadratic |
代码示例
将上面Age影响器改为Attractor影响器,设置目标点位置为(0,0)。
Attractor {
anchors.fill: parent; system: particles
pointX: 0; pointY: 0;
strength: 40000000;
affectedParameter: Attractor.Acceleration
proportionalToDistance: Attractor.InverseQuadratic
}
效果展示
从图中看出,经过Attractor影响器的粒子改变了运动方向,试图向散发引力的点飞去。
Friction
摩擦力与粒子的当前速度成正比,此元素给粒子施加摩擦力。
属性 | 类型 | 描述 |
---|---|---|
factor | real | 对粒子施加的阻力大小 |
threshold | real | 拖动只适用于速度高于阈值速度的对象。施加的阻力将使对象下降到阈值速度,但不会进一步。默认阈值为0 |
代码示例
此处代码设置了Friction影响器,运动速度超过每秒10像素的粒子都将会被施加阻力。
Friction {
anchors.fill: parent; system: particles
factor: 3
threshold: 10
}
效果展示
Gravity
在一个角度上施加加速度。该元素将所有受影响的粒子加速到指定角度的指定大小的矢量。如果角度和加速度没有变化,在发射器上设置指定的加速度会更有效。这一元素模拟了一个重心较远的大型物体的引力(因此整个场景的引力是恒定的)。要对场景附近或内部的物体进行重力建模,可以使用PointAttractor。
属性 | 类型 | 描述 |
---|---|---|
angle | real | 加速度角度 |
magnitude | real | 物体将被加速的像素/秒 |
代码示例
此处将Gravity影响器中角度属性设置为30°,加速度设置为每秒30000像素。
Gravity {
anchors.fill: parent; system: particles
magnitude: 30000; angle: 30;
}
效果展示
图中经过矩形块的粒子角度被改变,与x轴呈30°运动。这里的30°指的是以屏幕坐标来说的,屏幕坐标的x轴为从左到右,y轴为从上到下。