ооооо
This commit is contained in:
94
Assets/Standard Assets/Vehicles/Car/Scripts/WheelEffects.cs
Normal file
94
Assets/Standard Assets/Vehicles/Car/Scripts/WheelEffects.cs
Normal file
@ -0,0 +1,94 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user