using System.Collections.Generic;
using System.Linq;
using Unity.VisualScripting;
using UnityEngine;
///
/// менеджер тайлов
/// инициализация, создание новых, удаление, отслеживание кол-ва тайлов
///
public class TileManagerScript : MonoBehaviour
{
///
/// число тайлов, которые будут созданы
///
[SerializeField]
private int _NumTile;
///
/// номер текущего тайла
///
public int CurrentTile;
//
[SerializeField]
private float _DistanceTiles;
[SerializeField]
private List _TilesPref = new List();
///
/// поле массива тайлов
///
private List _Tiles;
// при запуске сцены, создание новых тайлов
private void Awake()
{
Debug.Log($"NumTile = {_NumTile}");
// создание массива
_Tiles = new List(_NumTile);
Debug.Log($"_Tiles = {_Tiles.Count}");
// запихивание в массив тайлов null, чтобы понимать, что там пусто
for (int i = 0; i < _Tiles.Count; i++)
{
_Tiles[i] = null;
}
Debug.Log($"_Tiles = {_Tiles.Count}");
float z = (_NumTile/2) * _DistanceTiles;
Debug.Log($"z = {z}");
// создание тайлов назад от игрока, где i номер тайла, а z координата transfrom.position.z
for (int i = 0; i < _NumTile; i++)
{
GenerateTile(new Vector3(0, 0, z), new Quaternion(0, 0, 0, 0));
z -= _DistanceTiles;
}
}
///
/// Генератор тайлов с собственным положением
///
///
///
///
public void GenerateTile(Vector3 pos, Quaternion rot)
{
Instantiate(_TilesPref[0], pos, rot);
}
///
/// Генератор тайлов за последним
///
public void GenerateTile()
{
Vector3 pos = _Tiles.Last().transform.position;
Quaternion rot = _Tiles.Last().transform.rotation;
Vector3 newVector = new Vector3(pos.x, pos.y, pos.z + _DistanceTiles);
Instantiate(_TilesPref[0], new Vector3(), rot);
DeleteTile();
}
///
/// Удалитель тайлов
///
///
public void DeleteTile()
{
Destroy(_Tiles[0]);
_Tiles.RemoveAt(0);
//GenerateTile();
}
void Start()
{
}
// Update is called once per frame
void Update()
{
}
}