Unity 3D粒子系统Snow效果

时间:2016-10-28 12:57:33

标签: c# unity3d game-engine particle-system

在团结3D中,我建立了一个2d跑步者,我在其中创建了一个粒子系统,可以从主摄像机屏幕右上角的单个位置发出像粒子一样的雪。

我将粒子发射器连接到主摄像机上,因此屏幕上的粒子总是像颗粒一样下雪,然而,随着主摄像机的速度增加,粒子发射器的速度也会增加,最终会开始从屏幕上发射粒子。

如何更改发射器的设置,以便发射器的速度不会影响粒子的方向。最后,对于更多细节,我将发射器的形状设置为锥形,并将模拟空间设置为世界。任何帮助将不胜感激

1 个答案:

答案 0 :(得分:1)

您可以更改 ParticleSystem 组件的模拟空间设置:Particle System main module

修改 因为我一开始并没有注意到你希望粒子的速度随着相机的加速而增加(我的不好......)这里有一种你可以伪造效果的方法:

public class TestScript : MonoBehaviour
{
    #region Attributes
    [SerializeField]
    private float m_MaxTransformSpeed;

    [SerializeField]
    private float m_MinStartSpeed;
    [SerializeField]
    private float m_MaxStartSpeed;

    private ParticleSystem m_Particles;
    private Vector3 m_PreviousPosition;
    #endregion

    #region MonoBehaviour
    protected void Start()
    {
        m_Particles = GetComponent<ParticleSystem>();
    }

    protected void Update()
    {
        Vector3 cameraSpeed = transform.position - m_PreviousPosition;
        m_Particles.startSpeed = Mathf.Clamp(m_MinStartSpeed + (m_MaxStartSpeed - m_MinStartSpeed) * cameraSpeed.magnitude / m_MaxTransformSpeed, m_MinStartSpeed, m_MaxStartSpeed);
        m_PreviousPosition = transform.position;
    }
    #endregion
}

您可以保存 N 旧位置并获取 N 增量的平均速度值,或者直接发送脚本的数量,而不是仅基于最新的帧。如果您手动移动,则应用于相机的移动。