Pixi.js: Kamera nach Spieler

Erstellt am 29. Apr. 2017  ·  8Kommentare  ·  Quelle: pixijs/pixi.js

Was ist also im Grunde der effizienteste Weg, dies mit Pixi zu tun? Ich möchte

  1. Kamera im Grunde, um einem Spieler zu folgen und den Hintergrund entsprechend der Position des Spielers zu ändern
  2. Scrollen Sie nur durch die Welt, wenn der Player beispielsweise 400 Pixel vom rechten Ende der Leinwand und 300 Pixel vom linken Ende der Leinwand entfernt ist
  3. Dinge wie Feinde, Dinge am Boden und Objekte passen sich entsprechend an (passen sich auch der Landschaft an).

Danke im Voraus

🤔 Question

Hilfreichster Kommentar

Jemand, bitte machen Sie das zu einem Pixi-Wiki-Artikel. Ich denke, ich erkläre das Ding zum 10. Mal. Wir brauchen ein Tutorial zu diesem Thema

Alle 8 Kommentare

mache "Kamera" Container, lege alles dort hin.

camera.position.set(renderer.screen.width/2, renderer.screen.height/2);
camera.pivot.copy(player.position);

//EVERY FRAME

var targetPivot = player.position;

//LERP IT, dt is something between 0 and 1.
// i use dt = 1 - Math.exp(-deltaInMillis / 100);
// or you can just assign targetpivot to pivot
camera.pivot.x = (targetPivot.x - camera.pivot.x) * dt + camera.pivot.x;
camera.pivot.y = (targetPivot.y - camera.pivot.y) * dt + camera.pivot.y;

//big square

var mapRect = new PIXI.Rectangle();
mapRect.x = camera.pivot.x - renderer.screen.width/2;
mapRect.y = camera.pivot.x - renderer.screen.height/2;
mapRect.width  = renderer.screen.width;
mapRect.height = renderer.screen.height;
mapRect.pad(400,400); // -this line was updated

//every time camera changes position


var newRect = new PIXI.Rectangle();
newRect .x = camera.pivot.x - renderer.screen.width/2;
newRect .y = camera.pivot.x - renderer.screen.height/2;
newRect .width  = renderer.screen.width;
newRect .height = renderer.screen.height;
if (newRect.x < mapRect.x || newRect.right > mapRect.right ||
   newRect.y < mapRect.y ||  newRect.bottom > mapRect.bottom) {
   mapRect = newRect;
   //ADJUST THE BACKGROUND AND STUFF
   //CLEAR AND FILL THE TILEMAP: https://github.com/pixijs/pixi-tilemap
}

Jemand, bitte machen Sie das zu einem Pixi-Wiki-Artikel. Ich denke, ich erkläre das Ding zum 10. Mal. Wir brauchen ein Tutorial zu diesem Thema

Dankeschön. Es macht den Job, aber ich bin nicht in der Lage, 2. Punkt zu erreichen. Das Ergebnis von mapRect.enlarge (400); ist NaN. Laut Dokumentation soll es ein weiteres Rechteck geben.
Wenn Sie es nur etwas detaillierter erklären könnten, wäre das großartig.
Dankeschön.

OK, benutze stattdessen "pad (400,400)" ";)

Es scheint immer noch ein Problem zu geben, da newRect.x in jedem Frame immer größer wird. Ich vermisse hier etwas Großes, denke ich :(

@mirosssc

mapRect = newRect;
mapRect.pad(400,400);

Stellen Sie außerdem sicher, dass Sie jedes Mal newRect erstellen. Wenn Sie dies nicht tun, verwenden Sie bitte "mapRect.copy (newRect);" statt Zuordnung.

Ich habe Pseudocode geschrieben. Ich hoffe du hast das Zeug in verschiedene Funktionen wie gameStart, gameFrame oder so kopiert? Es soll nicht in einer Funktion sein.

Hallo! Schließen Sie dieses Problem vorerst aufgrund seiner Inaktivität. Wenn Sie möchten, dass diese Ausgabe erneut geöffnet wird, können Sie uns gerne einen Stich geben. Danke 👍

Dieser Thread wurde automatisch gesperrt, da nach dem Schließen keine aktuellen Aktivitäten stattgefunden haben. Bitte öffnen Sie eine neue Ausgabe für verwandte Fehler.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

SebastienFPRousseau picture SebastienFPRousseau  ·  3Kommentare

sntiagomoreno picture sntiagomoreno  ·  3Kommentare

samueller picture samueller  ·  3Kommentare

lunabunn picture lunabunn  ·  3Kommentare

Makio64 picture Makio64  ·  3Kommentare