LikhenkoVG 3d15c0dc4c Скрипт генерации карты
Почти готовый скрипт генерации карты - готова генерация при запуске сцены, создаётся заданное число тайлов. Начал писать удаление и создание новых тайлов по тому, пока идёт игрок.
2024-12-10 20:01:30 +03:00

105 lines
2.9 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System.Collections.Generic;
using System.Linq;
using Unity.VisualScripting;
using UnityEngine;
/// <summary>
/// менеджер тайлов
/// инициализация, создание новых, удаление, отслеживание кол-ва тайлов
/// </summary>
public class TileManagerScript : MonoBehaviour
{
/// <summary>
/// число тайлов, которые будут созданы
/// </summary>
[SerializeField]
private int _NumTile;
/// <summary>
/// номер текущего тайла
/// </summary>
public int CurrentTile;
//
[SerializeField]
private float _DistanceTiles;
[SerializeField]
private List<GameObject> _TilesPref = new List<GameObject>();
/// <summary>
/// поле массива тайлов
/// </summary>
private List<GameObject> _Tiles;
// при запуске сцены, создание новых тайлов
private void Awake()
{
Debug.Log($"NumTile = {_NumTile}");
// создание массива
_Tiles = new List<GameObject>(_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;
}
}
/// <summary>
/// Генератор тайлов с собственным положением
/// </summary>
/// <param name="tile"></param>
/// <param name="pos"></param>
/// <param name="rot"></param>
public void GenerateTile(Vector3 pos, Quaternion rot)
{
Instantiate(_TilesPref[0], pos, rot);
}
/// <summary>
/// Генератор тайлов за последним
/// </summary>
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();
}
/// <summary>
/// Удалитель тайлов
/// </summary>
/// <param name="tile"></param>
public void DeleteTile()
{
Destroy(_Tiles[0]);
_Tiles.RemoveAt(0);
//GenerateTile();
}
void Start()
{
}
// Update is called once per frame
void Update()
{
}
}