Как хранить спрайты в массиве в Phaser 3? - PullRequest
0 голосов
/ 25 февраля 2019

Я хочу хранить препятствия в моей игре в массиве, чтобы я мог генерировать случайное число и рисовать случайный спрайт из массива.Итак, вот мои вопросы:

  1. Как хранить спрайты в массиве?
  2. Как получить доступ к спрайтам в массиве и использовать их?

Ответы [ 2 ]

0 голосов
/ 26 февраля 2019

1) Вы можете либо создать спрайты, а затем сохранить их в массиве

let arr = [];
let sprite1 = this.add.image(400, 300, 'spritekey1');
arr.push(sprite1);
let sprite2 = this.add.image(400, 300, 'spritekey2');
arr.push(sprite2);
let sprite3 = this.add.image(400, 300, 'spritekey3');
arr.push(sprite3);

// To get Random element from array use Phaser's Utility function
let randomSprite = Phaser.Utils.Array.GetRandom(arr);

2) Или вы можете создать группу, подобную этой

let group = this.add.group();
let sprite1 = this.add.image(400, 300, 'spritekey1');
let sprite2 = this.add.image(400, 300, 'spritekey2');
let sprite3 = this.add.image(400, 300, 'spritekey3');    
group.add(sprite1);
group.add(sprite2);
group.add(sprite3);

// group.getChildren() returns an array
let randomSprite = Phaser.Utils.Array.GetRandom(group.getChildren());

Примеры групп здесь было бы полезно.Группа Документация.

Использование Phaser предоставленной вспомогательной функции для получения случайного элемента - это самый простой и прямой подход .Phaser.Util.Array.GetRandom() документация.

0 голосов
/ 25 февраля 2019

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

Ваша идея создать препятствия на основе случайного числа звучит хорошо.

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

var obstacles = [
		{image: 'https://via.placeholder.com/50'},
		{image: 'https://via.placeholder.com/100'},
		{image: 'https://via.placeholder.com/150'},
		{image: 'https://via.placeholder.com/200'},
	];
// Get the number of images in the obstacles Array
var obstacleCount = Object.keys(obstacles).length;

// get a random number for pick an obstacle
var randomOb = Math.floor((Math.random() * obstacleCount) + 0);

for(var keyNumber in obstacles){
	if(parseInt(keyNumber) === randomOb){
		// This will be your image object selected by the random number
		console.log(JSON.stringify(obstacles[keyNumber]['image']));
	}
}

Надеемся, это поможет вам.

...