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; }
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); }