Проблемы с 2-мерным массивом в C # - PullRequest
0 голосов
/ 05 июня 2018
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public static class noise 
{
    public static float[,] GenerateNoiseMap(int mapWidth, int mapHeight, float scale)
    {
        float[,] noiseMap = new float[mapWidth, mapHeight];

        if (scale <= 0)
        {
            scale = 0.0001f;
        }
        for(int y = 0; y<mapHeight; y++)
        {
            for (int x = 0; y < mapWidth; x++)
            {
                float sampleX = x/(mapWidth * scale);
                float sampleY = y/(mapHeight * scale);

                float perlinValue = Mathf.PerlinNoise(sampleX, sampleY);

                noiseMap[x, y] = perlinValue;
                Debug.Log(noiseMap.GetLength(0));
                Debug.Log(noiseMap.GetLength(1));
            }
        }
        return noiseMap;
    }
}

Выше приведен код, выдающий мне ошибку:

IndexOutOfRangeException: индекс массива выходит за пределы диапазона.

noise.GenerateNoiseMap (Int32 mapWidth, Int32 mapHeight, По одной шкале) (на

Активы / Сценарии / MapGeneration / noise.cs: 24)

Я не совсем знаком с тем, как массивы работают в C # (или вообще)но мои учителя говорят, что наиболее распространенная проблема с массивами, которые приводят к ошибке IndexOutOfRange, состоит в том, что я начинаю с 1, а не с индекса 0. Я пытался это исправить, но, похоже, это не проблема в этом разделекод.

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

Что выдает ошибку?

Заранее спасибо.

1 Ответ

0 голосов
/ 05 июня 2018

Ваша проблема здесь:

for (int x = 0; y < mapWidth; x++)

должно быть:

for (int x = 0; x < mapWidth; x++)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...