我想将游戏中的障碍物存储在数组中,以便可以生成随机数并从数组中绘制随机精灵。所以这是我的问题:
答案 0 :(得分:0)
人们之所以不赞成您的问题,是因为a)您尚未在问题中提供任何代码尝试,并且b)您的问题有点太广泛了。
您基于随机数生成障碍物的想法听起来不错。
我不确定您的Sprite对象是什么样子,也不确定您的代码级别,但是下面将向您展示如何创建对象数组。
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']));
}
}
希望这可以帮助您前进。
答案 1 :(得分:0)
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());
组示例here将很有用。 组Documentation.
使用 Phaser 提供的效用函数来获取随机元素是最简单和直接方法。
Phaser.Util.Array.GetRandom()
documentation.