using System; using UnityEngine; namespace UnityStandardAssets.Effects { public class WaterHoseParticles : MonoBehaviour { public static float lastSoundTime; public float force = 1; private ParticleCollisionEvent[] m_CollisionEvents = new ParticleCollisionEvent[16]; private ParticleSystem m_ParticleSystem; private void Start() { m_ParticleSystem = GetComponent(); } private void OnParticleCollision(GameObject other) { int safeLength = m_ParticleSystem.GetSafeCollisionEventSize(); if (m_CollisionEvents.Length < safeLength) { m_CollisionEvents = new ParticleCollisionEvent[safeLength]; } int numCollisionEvents = m_ParticleSystem.GetCollisionEvents(other, m_CollisionEvents); int i = 0; while (i < numCollisionEvents) { if (Time.time > lastSoundTime + 0.2f) { lastSoundTime = Time.time; } var col = m_CollisionEvents[i].collider; if (col.attachedRigidbody != null) { Vector3 vel = m_CollisionEvents[i].velocity; col.attachedRigidbody.AddForce(vel*force, ForceMode.Impulse); } other.BroadcastMessage("Extinguish", SendMessageOptions.DontRequireReceiver); i++; } } } }