コード例 #1
0
    void Update()
    {
        for (int i = 0; i < emitters.Count; i++)
        {
            EmitterClass     emit     = emitters[i];
            EmissionSettings settings = emit.settings;
            float            travDist = (emit.lastEmissionPos - emit.emitterTransform.position).magnitude;
            int innerLoop             = Mathf.FloorToInt(travDist);

            if (settings.interpolateEmission && innerLoop > 0)
            {
                for (int j = 0; j < innerLoop; j++)
                {
                    Vector3 randomVelo  = DarkRef.RandomVector3(settings.emitVelocity[0], settings.emitVelocity[1]);
                    float   randomSize  = Random.Range(settings.emitSize.x, settings.emitSize.y);
                    float   randomLife  = Random.Range(settings.emitLifetime.x, settings.emitLifetime.y);
                    Color   randomColor = Color.Lerp(settings.emitColors[0], settings.emitColors[1], Random.value);
                    thisSystem.Emit(Vector3.Lerp(emit.lastEmissionPos, emit.emitterTransform.position, (1f / innerLoop) * j) + (Random.insideUnitSphere * settings.emissionRadius), randomVelo, randomSize, randomLife, randomColor);
                }
            }
            else if (travDist >= emit.settings.emissionDistance)
            {
                Vector3 randomVelo  = DarkRef.RandomVector3(settings.emitVelocity[0], settings.emitVelocity[1]);
                float   randomSize  = Random.Range(settings.emitSize.x, settings.emitSize.y);
                float   randomLife  = Random.Range(settings.emitLifetime.x, settings.emitLifetime.y);
                Color   randomColor = Color.Lerp(settings.emitColors[0], settings.emitColors[1], Random.value);
                thisSystem.Emit(emit.emitterTransform.position + (Random.insideUnitSphere * settings.emissionRadius), randomVelo, randomSize, randomLife, randomColor);
            }

            emit.lastEmissionPos = emit.emitterTransform.position;
        }
    }
コード例 #2
0
    public void AddToEmitters(EmitterClass newClass)
    {
        Initialize();
        if (emitters.Contains(newClass))
        {
            return;
        }

        newClass.lastEmissionPos = newClass.emitterTransform.position;
        emitters.Add(newClass);
    }