| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- using System.Collections;
- using UnityEngine;
- namespace UnityStandardAssets.Vehicles.Car
- {
- [RequireComponent(typeof (AudioSource))]
- public class WheelEffects : MonoBehaviour
- {
- public Transform SkidTrailPrefab;
- public static Transform skidTrailsDetachedParent;
- public ParticleSystem skidParticles;
- public bool skidding { get; private set; }
- public bool PlayingAudio { get; private set; }
- private AudioSource m_AudioSource;
- private Transform m_SkidTrail;
- private WheelCollider m_WheelCollider;
- private void Start()
- {
- skidParticles = transform.root.GetComponentInChildren<ParticleSystem>();
- if (skidParticles == null)
- {
- Debug.LogWarning(" no particle system found on car to generate smoke particles", gameObject);
- }
- else
- {
- skidParticles.Stop();
- }
- m_WheelCollider = GetComponent<WheelCollider>();
- m_AudioSource = GetComponent<AudioSource>();
- PlayingAudio = false;
- if (skidTrailsDetachedParent == null)
- {
- skidTrailsDetachedParent = new GameObject("Skid Trails - Detached").transform;
- }
- }
- public void EmitTyreSmoke()
- {
- skidParticles.transform.position = transform.position - transform.up*m_WheelCollider.radius;
- skidParticles.Emit(1);
- if (!skidding)
- {
- StartCoroutine(StartSkidTrail());
- }
- }
- public void PlayAudio()
- {
- m_AudioSource.Play();
- PlayingAudio = true;
- }
- public void StopAudio()
- {
- m_AudioSource.Stop();
- PlayingAudio = false;
- }
- public IEnumerator StartSkidTrail()
- {
- skidding = true;
- m_SkidTrail = Instantiate(SkidTrailPrefab);
- while (m_SkidTrail == null)
- {
- yield return null;
- }
- m_SkidTrail.parent = transform;
- m_SkidTrail.localPosition = -Vector3.up*m_WheelCollider.radius;
- }
- public void EndSkidTrail()
- {
- if (!skidding)
- {
- return;
- }
- skidding = false;
- m_SkidTrail.parent = skidTrailsDetachedParent;
- Destroy(m_SkidTrail.gameObject, 10);
- }
- }
- }
|