显示来自Atlas Phaser的随机精灵



我试图添加1的5个图像在地图集随机,但他们都显示一个在另一个之上,有办法解决这个问题吗?基本上,我希望每次运行关卡时,其中1个精灵可以是5个精灵中的任何一个,但我只能同时看到5个精灵。

///Declaration
 this.load.atlas('Monsters', 'images/monsters.png', 'images/monsters.json');
////Where I call sprite
 this.figuritaspega = this.game.add.sprite(0, 0, 'Monsters');
        this.figuritaspega.frame = this.rnd.integerInRange(0,4);
         this.figuritaspega = this.game.add.group;
        this.figuraarriba = this.add.sprite(1015, 140, this.figuritaspega);
        this.figuraarriba.scale.set(0.9 , 0.9 );
////.json below
{"frames": [
{
	"filename": "amarillo.png",
	"frame": {"x":0,"y":0,"w":188,"h":200},
	"rotated": false,
	"trimmed": false,
	"spriteSourceSize": {"x":0,"y":0,"w":188,"h":200},
	"sourceSize": {"w":188,"h":200}
},
{
	"filename": "azul.png",
	"frame": {"x":188,"y":0,"w":240,"h":200},
	"rotated": false,
	"trimmed": false,
	"spriteSourceSize": {"x":0,"y":0,"w":240,"h":200},
	"sourceSize": {"w":240,"h":200}
},
{
	"filename": "naranja.png",
	"frame": {"x":428,"y":0,"w":162,"h":200},
	"rotated": false,
	"trimmed": false,
	"spriteSourceSize": {"x":0,"y":0,"w":162,"h":200},
	"sourceSize": {"w":162,"h":200}
},
{
	"filename": "rojo.png",
	"frame": {"x":590,"y":0,"w":190,"h":200},
	"rotated": false,
	"trimmed": false,
	"spriteSourceSize": {"x":0,"y":0,"w":190,"h":200},
	"sourceSize": {"w":190,"h":200}
},
{
	"filename": "rosa.png",
	"frame": {"x":780,"y":0,"w":231,"h":200},
	"rotated": false,
	"trimmed": false,
	"spriteSourceSize": {"x":0,"y":0,"w":231,"h":200},
	"sourceSize": {"w":231,"h":200}
}],
"meta": {
	"app": "http://www.codeandweb.com/texturepacker",
	"version": "1.0",
	"image": "monsters.png",
	"format": "RGBA8888",
	"size": {"w":1011,"h":200},
	"scale": "1",
	"smartupdate": "$TexturePacker:SmartUpdate:41785e106df91b6daf42364753f15c41:5fca3c08999ac8d93eabfac98fafaf65:8fc4d3ec51ba7bc700054b5f64cf62b1$"
}
}

我真的不知道你在这里想做什么,但我知道有几个编程错误。

首先您添加Phaser.Sprite并将其分配给var figuritaspega,这很好,但随后您创建Phaser.Group并将其分配给相同的var figuritaspega ?我认为最好为组设置一个单独的变量。

其次,add.group是一个函数调用,所以你应该添加()来指示它是一个函数调用,而不是将函数分配给变量。

最后,当你添加一个精灵到figuraarriba时,参数是1015,140,这个。figitaspega,但预期参数是x,y,key,frame(见这里),所以基本上你传递的精灵/组this.figuritaspega,如果它是一个精灵表?那不行。

就像我说的,我不完全确定你在这里想做什么,或者为什么只添加一个精灵到一个组?但我想也许像这样的东西会起作用:

// create a sprite, random frame 0..4
this.figuritaspega = this.game.add.sprite(0, 0, 'Monsters');
this.figuritaspega.frame = this.rnd.integerInRange(0,4);
// create a group
this.mysprites = this.game.add.group(); // <- function call
this.mysprites.add(this.figuritaspega);
// scale entire group and reposition group
this.mysprites.scale.set(0.9 , 0.9 );
// notice that the sprite position is relative to the group position
this.mysprites.x = 10;
this.mysprites.y = 20;

最新更新