返回

QML 粒子系统 - Affector(2)

闲谈

在前面的文章中,我们简单介绍了 Affector 影响器及其基础类型的属性,并使用基础类型的属性进行了一些示例。本节将对 Affector 影响器的八个子类型进行介绍和示例。

缩放影响器(ScaleAffector)

缩放影响器用于改变粒子的缩放比例。缩放比例可以是均匀的,也可以是各向异性的。均勻缩放是指粒子在所有方向上都按相同比例缩放,而各向异性缩放是指粒子在不同的方向上按不同的比例缩放。

import QtQuick.Particles 2.12
import QtQuick 2.12

ParticleSystem {
    // 创建缩放影响器
    ScaleAffector {
        // 设置缩放比例
        scale: 2.0
    }

    // 创建粒子发射器
    Emitter {
        // 设置粒子数量
        particleCount: 100
    }
}

这个例子中,我们将缩放比例设置为 2.0,这意味着粒子将被放大两倍。

旋转影响器(RotationAffector)

旋转影响器用于改变粒子的旋转角度。旋转角度可以是绝对的,也可以是相对的。绝对旋转是指粒子相对于其原始方向的旋转角度,而相对旋转是指粒子相对于其当前方向的旋转角度。

import QtQuick.Particles 2.12
import QtQuick 2.12

ParticleSystem {
    // 创建旋转影响器
    RotationAffector {
        // 设置旋转角度
        angle: 90
    }

    // 创建粒子发射器
    Emitter {
        // 设置粒子数量
        particleCount: 100
    }
}

这个例子中,我们将旋转角度设置为 90 度,这意味着粒子将被旋转 90 度。

重力影响器(GravityAffector)

重力影响器用于为粒子施加重力。重力方向可以是垂直向下的,也可以是自定义的。垂直向下是指粒子受到的重力方向与屏幕的垂直方向一致,而自定义方向是指粒子受到的重力方向可以任意设置。

import QtQuick.Particles 2.12
import QtQuick 2.12

ParticleSystem {
    // 创建重力影响器
    GravityAffector {
        // 设置重力方向
        gravity: Vector3D(0, -9.81, 0)
    }

    // 创建粒子发射器
    Emitter {
        // 设置粒子数量
        particleCount: 100
    }
}

这个例子中,我们将重力方向设置为垂直向下,这意味着粒子将受到垂直向下的重力。

摩擦影响器(FrictionAffector)

摩擦影响器用于为粒子施加摩擦力。摩擦力可以使粒子减速,也可以使粒子停止运动。摩擦力的大小可以是恒定的,也可以是随时间变化的。恒定摩擦力是指摩擦力的大小始终不变,而随时间变化的摩擦力是指摩擦力的大小会随着时间而改变。

import QtQuick.Particles 2.12
import QtQuick 2.12

ParticleSystem {
    // 创建摩擦影响器
    FrictionAffector {
        // 设置摩擦力的大小
        friction: 0.1
    }

    // 创建粒子发射器
    Emitter {
        // 设置粒子数量
        particleCount: 100
    }
}

这个例子中,我们将摩擦力的大小设置为 0.1,这意味着粒子将受到 0.1 的摩擦力。

线性力影响器(LinearForceAffector)

线性力影响器用于为粒子施加线性力。线性力可以是恒定的,也可以是随时间变化的。恒定线性力是指线性力的大小和方向始终不变,而随时间变化的线性力是指线性力的大小和方向会随着时间而改变。

import QtQuick.Particles 2.12
import QtQuick 2.12

ParticleSystem {
    // 创建线性力影响器
    LinearForceAffector {
        // 设置线性力的大小和方向
        force: Vector3D(10, 0, 0)
    }

    // 创建粒子发射器
    Emitter {
        // 设置粒子数量
        particleCount: 100
    }
}

这个例子中,我们将线性力的大小和方向设置为 (10, 0, 0),这意味着粒子将受到大小为 10、方向为 x 轴正方向的线性力。

径向力影响器(RadialForceAffector)

径向力影响器用于为粒子施加径向力。径向力是指从一个点到另一个点的力。径向力的大小和方向可以是恒定的,也可以是随时间变化的。恒定径向力是指径向力的大小和方向始终不变,而随时间变化的径向力是指径向力的大小和方向会随着时间而改变。

import QtQuick.Particles 2.12
import QtQuick 2.12

ParticleSystem {
    // 创建径向力影响器
    RadialForceAffector {
        // 设置径向力的大小和方向
        force: Vector3D(10, 0, 0)
        center: Point { x: 100, y: 100 }
    }

    // 创建粒子发射器
    Emitter {
        // 设置粒子数量
        particleCount: 100
    }
}

这个例子中,我们将径向力的大小和方向设置为 (10, 0, 0),并且将径向力中心设置为 (100, 100),这意味着粒子将受到从点 (100, 100) 到其自身位置的大小为 10、方向为 x 轴正方向的径向力。

吸引影响器(AttractorAffector)

吸引影响器用于为粒子施加吸引力。吸引力是指两个物体之间互相吸引的力。吸引力的大小和方向可以是恒定的,也可以是随时间变化的。恒定吸引力是指吸引力的大小和方向始终不变,而随时间变化的吸引力是指吸引力的大小和方向会随着时间而改变。

import QtQuick.Particles 2.12
import QtQuick 2.12

ParticleSystem {
    // 创建吸引影响器
    AttractorAffector {
        // 设置吸引力的大小和方向
        force: Vector3D(10, 0, 0)
        center: Point { x: 100, y: 100 }
    }

    // 创建粒子发射器
    Emitter {
        // 设置粒子数量
        particleCount: 100
    }
}

这个例子中,我们将吸引力的大小和方向设置为 (10, 0, 0),并且将吸引力中心设置为 (100, 100),这意味着粒子将受到从点 (100, 100) 到其自身位置的大小为 10、方向为 x 轴正方向的吸引力。

弹簧影响器(SpringAffector)

弹簧影响器用于为粒子施加弹簧力。弹簧力是指两个物体之间互相吸引或排斥的力。弹簧力的大小和方向可以是恒定的,也可以是随时间变化的。恒定弹簧力是指弹簧力的大小和方向始终不变,而随时间变化的弹簧力是指弹簧力的大小和方向会随着时间而改变。

import QtQuick.Particles 2.12
import QtQuick 2.12

ParticleSystem {
    // 创建弹簧影响器
    SpringAffector {
        // 设置弹簧力的大小和方向
        force: Vector3D(10, 0, 0)
        center: Point { x: 100, y: 100 }
    }

    // 创建粒子发射器
    Emitter {
        // 设置粒子数量
        particleCount: 100
    }
}

这个例子中,我们将弹簧力的大小和方向设置为 (10, 0, 0),并且将弹簧力中心设置为 (100, 100),这意味着粒子将受到从点 (100, 100) 到其自身位置的大小为 10、方向为 x 轴正方向的弹簧力。