Sollten sich in einem 2D-Scrollspiel die Objekte bewegen oder sollte sich die Kamera bewegen?

8

Ich bin neu im Spieledesign und weiß nicht wirklich, wie die Dinge gemacht werden. Ich denke daran, ein iOS-Spiel zu entwickeln, bei dem ein Schiff so hoch wie möglich fliegen muss (mit variabler Geschwindigkeit) und unterwegs Power-Ups usw. sammelt.

Was ist der Weg hierher? Sollten der Hintergrund und die Gegenstände von oben nach unten scrollen oder sollte das Schiff wirklich nach oben fliegen und die Ansicht damit verschieben?

Thomas
quelle
Die einzig richtige Antwort ist "beides".
Blecki

Antworten:

6

Alles ist relativ. Wirklich, Sie verändern Ihre Ansicht immer relativ zu Ihrer festen Spielerposition.

Wenn Sie also den Bildschirm vorerst vergessen, nehmen wir an, Sie haben diese drei Schritte (die Positionen darstellen, die in jeder Spielschleife aktualisiert werden):

  1. playerWorldPosition = 50, 100; objectWorldPosition = 60, 200;
  2. playerWorldPosition = 55, 110; objectWorldPosition = 60, 160;
  3. playerWorldPosition = 60, 120; objectWorldPosition = 60, 120;

(jeweils als x, y)

Wie Sie sehen können, fliegt der Spieler nach oben oder springt nach oben und bewegt sich leicht nach rechts, während das Objekt (möglicherweise ein Powerup) gerade nach unten fällt. Der Spieler fängt das Powerup. Wie zeichnet man das auf dem Bildschirm?

Nehmen wir zunächst an, Sie möchten, dass sich Ihr Player jederzeit in der Mitte des Bildschirms befindet. Die Ansicht bleibt also für den Player gesperrt - dies ist der einfachste Ansatz zur Visualisierung. Die Position Ihres Spielers ist dann immer screenCentre(dh screenWidth/2, screenHeight/2). Wie erhalten Sie dann die Bildschirmposition anderer Objekte auf der Welt?

objectScreenPosition = (objectWorldPosition - playerWorldPosition) + screenCentre;

Sie können sehen, dass diese Formel auch für den tatsächlichen Spieler funktioniert, da (playerWorldPosition- playerWorldPosition) + screenCentregleich ist screenCentre. Sie können also dieselbe Formel auf jede Entität in Ihrem Spiel anwenden und eine Liste durchgehen. Sie können diesen einfachen Ansatz verwenden, um auf andere Dinge aufzubauen (z. B. Kameraverzögerung, Fälle, in denen Sie sich in der Ecke eines Levels befinden usw.).

Ingenieur
quelle
Und was ist, wenn es keine oder viele Spielerobjekte gibt? Was ist, wenn Sie Spezialeffekte wie Kameraverwacklungen machen möchten? Auch wenn die Mathematik gleich aussieht, ist es wirklich nicht dasselbe. Und es ist nicht das eine oder andere. Objekte bewegen sich und die Kamera bewegt sich ebenfalls.
Blecki
1
@Blecki ... Du sagst, nachdem die Antwort angenommen wurde. Wenn Sie wirklich denken, dass sie so unterschiedlich sind, müssen Sie Schwierigkeiten haben, Ihre Ansichten einzurichten. Schreiben Sie dann Ihre eigene präzise Antwort auf Ansichtstransformationen, die sich mit allen Eckfällen befassen. Niemand hält dich auf.
Ingenieur
Sie haben eine Kamera, sie hat eine Position, Sie erstellen eine Ansichtsmatrix. Es gibt keinen Eckfall.
Blecki
1
@Blecki Jetzt widersprichst du dir. "Was ist, wenn Sie Spezialeffekte wie Kameraverwacklungen machen möchten?"
Ingenieur
1
@Blecki. Richtig. Ich bin froh, dass wir uns einig sind.
Ingenieur