void OnCollisionEnter(Collision collision) { if (cooldown_remaining > 0) { foreach (ContactPoint contact in collision.contacts) { for (int i = 0; i < particles.Length; i++) { float d = ((particles[i].transform.position - contact.point).magnitude); Vector3 force = MatrixFunctions.vector_scalar(collision.impulse, Time.fixedDeltaTime * (1 + (d * d * d))); particles[i].set_force(force); } } cooldown_remaining = cooldown_frames; } else { cooldown_remaining--; } }