Ich bin dabei, ein Side-Scrolling-Spiel zu entwickeln, bei dem der Spieler vor dem Aufsetzen so weit wie möglich in der horizontalen Achse fahren soll. Beachten Sie, dass ich niemals auf der horizontalen Achse zurückfahren muss.
Ich entwickle dies mit der AndEngine für Android, die OpenGL und Box2d verwendet.
Bevor ich anfange, muss ich mich für etwas Wichtiges entscheiden: Soll ich die Welt um den Spieler herum nutzen, um Bewegungen zu simulieren, oder den Spieler tatsächlich bewegen und ihm mit den Kamerafunktionen der Spiel-Engine folgen?
Beide Ansätze scheinen unterschiedliche Stärken und Rückschläge zu haben, daher weiß ich nicht, welcher als der beste angesehen wird. Was würde es zum Beispiel einfacher machen, unterwegs Power-Ups hinzuzufügen und einen schönen animierten Hintergrund zu haben?
Vielen Dank!
Antworten:
Bewegen Sie die Kamera (an Ihrem Player angebracht). Ich würde mir vorstellen, dass Ihre Welt mehrere Objekte wie Feinde hat. Wenn Sie die Welt bewegen würden, müssten Sie alle diese Objekte durchlaufen, um ihre Positionen jedes Mal zu aktualisieren, wenn sich die Welt bewegt.
Wenn Sie den Player bewegen und die Kamera an den Player anschließen, ist der Ressourcenverbrauch minimal. Das Spiel erreicht seine Renderphase, durchläuft alles einmal wie jedes Bild und zeichnet es an Position - camera.position. Die Kameraposition entspricht in diesem Fall immer der Position Ihres Spielers.
quelle
camera.setChaseEntity(player);
, um dies zu erreichen.Ich bewege die Kamera immer und würde sie empfehlen - es gibt viele Gründe, warum ich das bevorzuge, aber das Wichtigste läuft wahrscheinlich darauf hinaus:
Wenn Sie die Kamera und den Player bewegen , müssen nur zwei Objekte aktualisiert werden, um den Bildschirm zu scrollen.
Wenn Sie die ganze Welt verschieben, wann immer der Bildschirm gescrollt werden muss, umfasst dies eine unbekannte und möglicherweise große Anzahl von Entitäten , die aktualisiert werden müssen.
quelle
Es ist wirklich ziemlich trivial, es macht keinen Unterschied zu den Dingen, die Sie beschrieben haben.
Entweder bewegen Sie den Hintergrund an der Kamera und dem Player vorbei oder Sie bewegen den Player und die Kamera mit sich. Ich nehme an, es gibt eine Sache weniger zu tun, wenn Sie nur den Hintergrund verschieben.
Obwohl ich nehme an, wenn Sie den Hintergrund verschieben, müssen Sie alle Pickups und Feinde dazu überreden, was wiederum trivial ist, aber es ist etwas, worüber Sie nachdenken müssen.
Persönlich würde ich den Spieler bewegen, weil ich es einfach mag, wenn die Dinge realistischer gemacht werden.
quelle
Andere Antworten sind gut, aber ich möchte ein paar Punkte hinzufügen, was besser ist, in der Hoffnung, jemandem zu helfen, der versucht, die gleiche Entscheidung für ein anderes Projekt zu treffen.
Spieler bewegen:
player.x += 5;
(Pseudocode).Die Welt bewegen:
0
.0
.Letztendlich kommt es auf das Projekt an. Wenn jemand einen originalen Mario-Klon erstellt, kann das Verschieben der Welt kompliziert sein, während das Verschieben des Players nicht wirklich viele Probleme verursacht. Wenn Sie jedoch ein riesiges Open-World-Spiel machen möchten, ist es möglicherweise besser, stattdessen die Welt zu bewegen.
quelle