示例#1
0
    protected void Start()
    {
        particlesCount++;
        lastCreatedParticleTime = Time.time;

        if (rand == null)
        {
            rand = gameObject.AddComponent <Rand> ();
        }

        if (direction == null)
        {
            direction = new Direction();
        }

        direction.Rand = rand;

        affectedParticle         = gameObject.GetComponent <AffectedParticleRB> ();
        affectedParticle.enabled = false;

        if (mainScenario)
        {
            StartCoroutine(ScenarioCoroutine());
        }
        else
        {
            StartCoroutine(BranchingCoroutine());
        }

        affectedParticle.motion = DirectedAffectedBrownian;
    }
示例#2
0
    public void DirectedAffectedBrownian(object value)
    {
        AffectedParticleRB particle = affectedParticle;        // value as AffectedParticleRB;

        Vector3 newDirection = direction.GetRandom();

        direction.vector = newDirection;
        Vector3 mForce = newDirection * particle.speed * p.particleSpeed;

        particle.RB.AddForce(mForce, ForceMode.Force);

        Vector3 affectorsPull = AffectedParticleRB.AggregateAffectorsInfCurve(particle.transform.position, particle.affectors) * particle.effectStrength;

        affectorsPull += AffectedParticleRB.AggregateAffectorsInfCurve(particle.transform.position, AffectedParticleRB.commonAffectors) * particle.effectStrength;
        particle.RB.AddForce(affectorsPull, ForceMode.Force);
    }