Version: 2022.2
public ParticleSystem.MinMaxCurve orbitalZ ;

描述

用于基于生命周期控制粒子围绕 z 轴速度的曲线。

using UnityEngine;
using System.Collections;

[RequireComponent(typeof(ParticleSystem))] public class ExampleClass : MonoBehaviour { private ParticleSystem ps; public float hSliderValueX = 0.0f; public float hSliderValueY = 0.0f; public float hSliderValueZ = 0.0f; public float hSliderValueRadial = 0.0f; public float hSliderValueOffset = 0.0f;

void Start() { ps = GetComponent<ParticleSystem>(); ps.transform.rotation = Quaternion.identity;

var main = ps.main; main.startSpeedMultiplier = 0.0f;

var shape = ps.shape; shape.shapeType = ParticleSystemShapeType.Circle; shape.radius = 5.0f;

var velocityOverLifetime = ps.velocityOverLifetime; velocityOverLifetime.enabled = true;

var trails = ps.trails; trails.enabled = true; trails.widthOverTrailMultiplier = 0.1f;

var psr = GetComponent<ParticleSystemRenderer>(); psr.trailMaterial = psr.material; }

void Update() { var velocityOverLifetime = ps.velocityOverLifetime; velocityOverLifetime.orbitalXMultiplier = hSliderValueX; velocityOverLifetime.orbitalYMultiplier = hSliderValueY; velocityOverLifetime.orbitalZMultiplier = hSliderValueZ; velocityOverLifetime.radialMultiplier = hSliderValueRadial; velocityOverLifetime.orbitalOffsetX = hSliderValueOffset; }

void OnGUI() { GUI.Label(new Rect(25, 40, 100, 30), "X"); GUI.Label(new Rect(25, 80, 100, 30), "Y"); GUI.Label(new Rect(25, 120, 100, 30), "Z"); GUI.Label(new Rect(25, 160, 100, 30), "Radial"); GUI.Label(new Rect(25, 200, 100, 30), "Offset");

hSliderValueX = GUI.HorizontalSlider(new Rect(85, 45, 100, 30), hSliderValueX, -5.0f, 5.0f); hSliderValueY = GUI.HorizontalSlider(new Rect(85, 85, 100, 30), hSliderValueY, -5.0f, 5.0f); hSliderValueZ = GUI.HorizontalSlider(new Rect(85, 125, 100, 30), hSliderValueZ, -5.0f, 5.0f); hSliderValueRadial = GUI.HorizontalSlider(new Rect(85, 165, 100, 30), hSliderValueRadial, -2.0f, 2.0f); hSliderValueOffset = GUI.HorizontalSlider(new Rect(85, 205, 100, 30), hSliderValueOffset, -5.0f, 5.0f); } }