2016-08-09 3 views
0

Ich versuche, 1 der 5 Bilder im Atlas nach dem Zufallsprinzip hinzuzufügen, aber sie alle zeigen sich übereinander, gibt es eine Möglichkeit, das zu beheben? Grundsätzlich möchte ich, dass 1 der Sprites angezeigt wird, jedes der 5 sein kann, wenn ich mein Level starte, aber alles, was ich bekomme, sind alle 5 gleichzeitig.Anzeigen von zufälligen Sprite aus Atlas Phaser

///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": [ 
 

 
{ 
 
\t "filename": "amarillo.png", 
 
\t "frame": {"x":0,"y":0,"w":188,"h":200}, 
 
\t "rotated": false, 
 
\t "trimmed": false, 
 
\t "spriteSourceSize": {"x":0,"y":0,"w":188,"h":200}, 
 
\t "sourceSize": {"w":188,"h":200} 
 
}, 
 
{ 
 
\t "filename": "azul.png", 
 
\t "frame": {"x":188,"y":0,"w":240,"h":200}, 
 
\t "rotated": false, 
 
\t "trimmed": false, 
 
\t "spriteSourceSize": {"x":0,"y":0,"w":240,"h":200}, 
 
\t "sourceSize": {"w":240,"h":200} 
 
}, 
 
{ 
 
\t "filename": "naranja.png", 
 
\t "frame": {"x":428,"y":0,"w":162,"h":200}, 
 
\t "rotated": false, 
 
\t "trimmed": false, 
 
\t "spriteSourceSize": {"x":0,"y":0,"w":162,"h":200}, 
 
\t "sourceSize": {"w":162,"h":200} 
 
}, 
 
{ 
 
\t "filename": "rojo.png", 
 
\t "frame": {"x":590,"y":0,"w":190,"h":200}, 
 
\t "rotated": false, 
 
\t "trimmed": false, 
 
\t "spriteSourceSize": {"x":0,"y":0,"w":190,"h":200}, 
 
\t "sourceSize": {"w":190,"h":200} 
 
}, 
 
{ 
 
\t "filename": "rosa.png", 
 
\t "frame": {"x":780,"y":0,"w":231,"h":200}, 
 
\t "rotated": false, 
 
\t "trimmed": false, 
 
\t "spriteSourceSize": {"x":0,"y":0,"w":231,"h":200}, 
 
\t "sourceSize": {"w":231,"h":200} 
 
}], 
 
"meta": { 
 
\t "app": "http://www.codeandweb.com/texturepacker", 
 
\t "version": "1.0", 
 
\t "image": "monsters.png", 
 
\t "format": "RGBA8888", 
 
\t "size": {"w":1011,"h":200}, 
 
\t "scale": "1", 
 
\t "smartupdate": "$TexturePacker:SmartUpdate:41785e106df91b6daf42364753f15c41:5fca3c08999ac8d93eabfac98fafaf65:8fc4d3ec51ba7bc700054b5f64cf62b1$" 
 
} 
 
}

Antwort

1

Ich weiß nicht wirklich, was Sie hier zu tun versuchen, aber ich weiß, ein paar Programmierfehler gibt.

Zuerst fügen Sie ein Phaser.Sprite und weisen es var figuritaspega was gut ist, aber dann erstellen Sie eine Phaser.Group und weisen, dass auch auf dem gleichen var figuritaspega? Ich denke, es ist besser, eine separate Variable für die Gruppe zu haben. Zweitens ist add.group ein Funktionsaufruf, daher sollten Sie () hinzufügen, um anzuzeigen, dass es sich um einen Funktionsaufruf handelt, anstatt die Funktion der Variablen zuzuweisen.

Und schließlich, wenn Sie ein Sprite figuraarriba die Parameter hinzufügen, sind 1015, 140, this.figuritaspega, aber die erwarteten Parameter sind x,y,key,frame (see here), so dass im Grunde sind Sie die Sprite/Gruppe vorbei this.figuritaspega, als ob es ein spritesheet ist ? Das wird nicht funktionieren.

Wie ich schon sagte, ich bin mir nicht ganz sicher, was Sie hier versuchen, oder was ist der Grund, nur ein Sprite zu einer Gruppe hinzuzufügen? Aber ich denke, vielleicht so etwas wie dies funktionieren wird:

// 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; 
+0

Danke für die Tipps hat mir sehr geholfen :), diese (this.rnd.integerInRange (0,4); ) und zur Festsetzung meine Fehler der Trick. – Rafahc