85 lines
1.9 KiB
C#
85 lines
1.9 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
public class CarManagerScript : MonoBehaviour
|
|
{
|
|
|
|
|
|
[SerializeField]
|
|
private List<GameObject> _CarPrefs;
|
|
|
|
[SerializeField]
|
|
private GameObject[] _Points = new GameObject[2];
|
|
|
|
[SerializeField]
|
|
bool _LeftToRight;
|
|
|
|
private void Start()
|
|
{
|
|
_LeftToRight = GetRandomObject<bool>(new List<bool> { true, false });
|
|
StartMove();
|
|
}
|
|
|
|
[SerializeField]
|
|
private int _Speed;
|
|
|
|
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);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
private GameObject _Car;
|
|
private void StartMove()
|
|
{
|
|
Vector3 pos;
|
|
Quaternion rot;
|
|
if (_LeftToRight)
|
|
{
|
|
pos = _Points[0].transform.position;
|
|
rot = Quaternion.Euler(0, 90, 0);
|
|
|
|
_Car = Instantiate(GetRandomObject<GameObject>(_CarPrefs), pos, rot);
|
|
}
|
|
else if (!_LeftToRight)
|
|
{
|
|
pos = _Points[1].transform.position;
|
|
rot = Quaternion.Euler(0, -90, 0);
|
|
|
|
_Car = Instantiate(GetRandomObject<GameObject>(_CarPrefs), pos, rot);
|
|
}
|
|
//_Car.transform.SetParent(gameObject.transform, _Points[1].transform);
|
|
|
|
}
|
|
|
|
public void DeleteCar()
|
|
{
|
|
Destroy( _Car );
|
|
StartMove();
|
|
}
|
|
|
|
T GetRandomObject<T>(List<T> list)
|
|
{
|
|
// проверка на пустоту списка
|
|
if (list == null || list.Count == 0)
|
|
{
|
|
return default;
|
|
}
|
|
|
|
// Генерация случайного индекса
|
|
int randomIndex = UnityEngine.Random.Range(0, list.Count);
|
|
return list[randomIndex];
|
|
}
|
|
}
|