Сохраняйте и извлекайте плитки из двумерного массива в зависимости от положения камеры - PullRequest
0 голосов
/ 04 апреля 2019

Я пытаюсь загрузить куски сетки на основе положения камеры для этого, я написал этот скрипт, который просто предоставляет положение камеры в соответствии с размером фрагмента сетки.

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 массиве и получить их напрямую в зависимости от положения камеры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...