58 lines
1.8 KiB
C#
58 lines
1.8 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
public class OilCollider : MonoBehaviour
|
|
{
|
|
private ParticleSystem part;
|
|
public List<ParticleCollisionEvent> collisionEvents;
|
|
public GameObject fxExplosion;
|
|
private bool collided = false;
|
|
|
|
public GameObject pf;
|
|
|
|
void Start()
|
|
{
|
|
part = GetComponent<ParticleSystem>();
|
|
collisionEvents = new List<ParticleCollisionEvent>();
|
|
}
|
|
|
|
void OnParticleCollision(GameObject other)
|
|
{
|
|
{
|
|
int eventCount = ParticlePhysicsExtensions.GetCollisionEvents(part, other, collisionEvents);
|
|
|
|
for (int i = 0; i < collisionEvents.Count; i++)
|
|
{
|
|
if (!collided)
|
|
{
|
|
foreach (Transform child in transform)
|
|
{
|
|
if (!child.gameObject.GetComponent<ParticleSystem>())
|
|
{
|
|
Destroy(child.gameObject);
|
|
}
|
|
}
|
|
ParticleCollisionEvent collision = collisionEvents[i];
|
|
Vector3 point = collision.intersection;
|
|
GameObject collider = Instantiate(pf, part.transform);
|
|
collider.transform.position = point;
|
|
collider.transform.rotation = Quaternion.identity;
|
|
collided = true;
|
|
StartCoroutine(pauseSpill());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private IEnumerator pauseSpill()
|
|
{
|
|
yield return new WaitForSeconds(1.7f);
|
|
part.Pause();
|
|
collided = false;
|
|
AudioSource cranking = GameObject.Find("SFX/OilSpill").GetComponent<AudioSource>();
|
|
if (cranking.isPlaying)
|
|
cranking.Stop();
|
|
}
|
|
}
|