2016-04-18 9 views
0

Ich mache ein vertikales Scroll-Jump'n'Run-Spiel, und ich möchte Sprites erstellen, die sich von links nach rechts (oder von rechts nach links) bewegen und wenn sie nicht mehr auf dem Bildschirm sind , sie erscheinen auf der anderen Seite.Schleifen eines Sprites unendlich in Cocos2D

ich eine Implementierung, die meist Arbeits sind, ist das einzige Problem, dass der Sprites auf einem einzigen Boden hält in jeder Schleife näher und näher.

Ich bin wirklich nicht gut in Dinge zu beschreiben, so please check this video.

ich den folgenden Code bin mit der neuen Position der Knoten zu berechnen:

pos.x = fmodf(size.width + pos.x + this->currentDir * this->speed * delta, this->len + size.width) - size.width; 

len ist die Breite, nach der das Sprite 0 neu positioniert wird (eigentlich -size.width, die die Breite des Sprites ist), currentDir ist entweder 1 oder -1 und delta ist die Zeit von der update() -Methode.

Jedes Sprite ist in seinem eigenen update() positioniert, aber ich habe bereits alles in der update() -Methode der Szene versucht, aber das Ergebnis war das gleiche.

Antwort

0

Wenn Ihre Delta-Variable im Laufe der Zeit zunimmt, dann glaube ich, dass Ihre pos.x ebenfalls im gleichen Verhältnis zunehmen würde, deshalb würde sich der Abstand von den Stockwerken ändern.

Haben Sie versucht, den Delta-Wert jedes Mal neu einzustellen, wenn der Boden aus dem Bildschirm verschwindet?

+0

delta ist die seit dem letzten Aufruf von update() verstrichene Zeit in Sekunden – vsakos

+0

Hi, das habe ich verstanden. Ich glaube, dass eine Ihrer Variablen im Laufe der Zeit mehr wächst, als sie sollte, und ich dachte, es könnte das Delta sein, wenn Sie es nicht zurücksetzen. Ich schlage vor, dass Sie die Werte drucken, die Sie im Laufe der Zeit haben, um zu sehen, wo das Problem liegt. – Felipe

Verwandte Themen