using System.Collections.Generic; using UnityEngine; /// /// Скрипт для анимации машины /// public class CarControllerScript : MonoBehaviour { /// /// to do /// [SerializeField] private List _Wheels = new List(); /// /// to do /// [SerializeField] private int _Speed; /// /// высота,чтобы колёса стояли на 0 /// [SerializeField] private float _High; [SerializeField] private CarBipScript _PlayerDetect; [SerializeField] private AudioSource _CarBip; HitDetectorScript _HitDetector; public float High { get => _High; set => _High = value; } private bool _IsBeep = false; private void Start() { _High = gameObject.transform.position.y; _PlayerDetect.PlayerEntered.AddListener(StartBeep); _PlayerDetect.PlayerExited.AddListener(StopBeep); } private void StartBeep(HitDetectorScript hit) { _HitDetector = hit; _HitDetector.Dead.AddListener(StopBeep); if (!_IsBeep && !_HitDetector.IsDead) { _CarBip.Play(); _IsBeep = true; } } private void StopBeep() { if (_IsBeep) { _CarBip.Stop(); _IsBeep = false; } } private void StopBeep(HitDetectorScript hit) { _HitDetector = hit; if (_IsBeep) { _CarBip.Stop(); _IsBeep= false; } } private void FixedUpdate() { foreach (var wheel in _Wheels) { wheel.transform.Rotate(Vector3.right * _Speed); } } }