Как сгенерировать случайную позицию на сетке? - PullRequest
0 голосов
/ 20 марта 2019

У меня есть карта 9600x9600, заполненная плитками 48x48, и я пытаюсь поместить объекты 96x96 в случайные точки, я могу получить случайную точку и поместить объект туда, но я не могу понять, как правильно расположить их рядом с края.

Выглядит так, если расположить рядом с краями (красная рамка там, где он расположен)

Я хочу, чтобы они были размещены здесь вместо этого, чтобы оно находилось в центре области 48x48x48

Я получаю случайные позиции с помощью этой функции:

  this.playArea = [9600, 9600]
  getRandomPosition(size) {
    const x = getRandomInt(0, this.playArea[0] / size);
    const y = getRandomInt(0, this.playArea[1] / size);
    return { x: x * size, y: y * size };
  }
  position = getRandomPosition(48)

Возможно, мне просто нужно добавить в функцию простую математику, но я не знаю, что.

1 Ответ

0 голосов
/ 20 марта 2019

Ограничьте генератор случайных чисел меньшим размером

Проблема, с которой вы сталкиваетесь, вызвана допустимым значением, слишком близким к краю.Чтобы исправить это, вам нужно передать widthOfGrid - widthOfBox и heightOfGrid - heightOfBox следующим образом:

  this.playArea = [9600, 9600]
  getRandomPosition(size) {
    const x = getRandomInt(1, (this.playArea[0] - size) / size);
    const y = getRandomInt(1, (this.playArea[1] - size) / size);
    return { x: x * size, y: y * size };
  };

Это должно привести к получению только чисел до края минус один из size.

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