using System; using System.Collections; using System.Collections.Generic; using UnityEngine; public class CarManagerScript : MonoBehaviour { [SerializeField] private int _MaxSpeed; private int _Speed; [SerializeField] private List _CarPrefs; [SerializeField] private GameObject[] _Points = new GameObject[2]; [SerializeField] bool _LeftToRight; private void Start() { List speedVar = new List(); speedVar.Add(_MaxSpeed); //for(int i = _MaxSpeed/2; i <= _MaxSpeed; i++) //{ // speedVar.Add(i); //} _Speed = GetRandomObject(speedVar); //Debug.Log($"Speed - {_Speed}"); _LeftToRight = GetRandomObject(new List { true, false }); float time = GetRandomObject(new List { 0f, 1f, 2f, 3f, 4f, 5f }); //Debug.Log(time); Invoke("StartMove", time); //Debug.Log("was spawned"); } private void FixedUpdate() { if (_Car != null) { if (_LeftToRight) { _Car.transform.Translate(Vector3.forward * Time.deltaTime * _Speed); } else if (!_LeftToRight) { _Car.transform.Translate(Vector3.forward * Time.deltaTime * _Speed); } if (_Car.transform.position.x >= _Points[1].transform.position.x && _LeftToRight) { DeleteCar(); } else if (_Car.transform.position.x <= _Points[0].transform.position.x && !_LeftToRight) { DeleteCar(); } } } private GameObject _Car; private void StartMove() { Vector3 pos; Quaternion rot; // разница до колеса if (_LeftToRight) { pos = new Vector3(_Points[0].transform.position.x, _Points[0].transform.position.y, _Points[0].transform.position.z); rot = Quaternion.Euler(0, 90, 0); _Car = Instantiate(GetRandomObject(_CarPrefs), pos, rot); } else if (!_LeftToRight) { pos = new Vector3(_Points[1].transform.position.x, _Points[1].transform.position.y, _Points[1].transform.position.z); rot = Quaternion.Euler(0, -90, 0); _Car = Instantiate(GetRandomObject(_CarPrefs), pos, rot); } float high = _Car.GetComponent().High; _Car.transform.position = pos = new Vector3(_Car.transform.position.x, _Car.transform.position.y + high, _Car.transform.position.z); _Car.transform.SetParent(gameObject.transform); } public void DeleteCar() { Destroy( _Car ); StartMove(); } T GetRandomObject(List list) { // проверка на пустоту списка if (list == null || list.Count == 0) { return default; } // Генерация случайного индекса int randomIndex = UnityEngine.Random.Range(0, list.Count); return list[randomIndex]; } }