Я пытаюсь загрузить куски сетки на основе положения камеры для этого, я написал этот скрипт, который просто предоставляет положение камеры в соответствии с размером фрагмента сетки.
public class GetCameraRelatedTile : MonoBehaviour
{
public Vector2 chunkPos;
public int tileSize;
Transform cameraPlayer;
// Start is called before the first frame update
void Start()
{
cameraPlayer = this.transform;
}
// Update is called once per frame
void Update()
{
GetPlayerPosAccordingToTile();
}
void GetPlayerPosAccordingToTile()
{
int chunkSize = tileSize;
chunkPos =
new Vector2(
Mathf.FloorToInt(cameraPlayer.position.x / chunkSize),
Mathf.FloorToInt(cameraPlayer.position.z / chunkSize)
);
}
}
Теперь мне нужно написать двумерный массив, в котором будут храниться куски в массиве, и его индекс должен быть установлен в соответствии с положением, чтобы я мог напрямую включить желаемый кусок
GetCameraRelatedTile getCameraRelatedTile;
public GameObject[,] tilesGrid = new GameObject[500, 500];
private void Reset()
{
for (int i = 0; i < this.transform.childCount; i++)
{
Transform childTile = this.transform.GetChild(i).transform;
float x = childTile.position.x/ getCameraRelatedTile.tileSize;
float z = childTile.position.z/ getCameraRelatedTile.tileSize;
tilesGrid[Mathf.Abs(Mathf.FloorToInt(x)), Mathf.Abs(Mathf.FloorToInt(z))] = childTile.gameObject;
}
}
но проблема в том, что он также производит отрицательный индекс, который я делаю позитивным через Mathf.Abs. Я не могу хранить отрицательный индекс, поэтому это невозможно. что я должен сделать, чтобы правильно сохранить объект в 2d массиве и получить их напрямую в зависимости от положения камеры.