2016-05-03 6 views
1

Ich mache ein einfaches Spiel in JavaScript und mit der Phaser-Bibliothek. Ich bin neu hier, also ist das hoffentlich keine dumme Frage.Wie mache ich ein Objekt Bounce von Kante

Ich habe alles perfekt gemacht, aber ich würde gerne wissen, wie man die Steine ​​von den Wänden abprallt, anstatt sie durchzugehen und auf der anderen Seite zu erscheinen.

Es hat etwas mit dieser Funktion zu tun:

ich von jemandem

„gesagt wurde, wenn es Breite hits: 940 dann x = 940 und starten Sie 939 zurück, i--, etc Die Höhe wird normal weitergeführt, anstatt sie zurückzusetzen, zB .

Wenn Sie auf den Boden oder auf die Oberseite treffen, dann tun Sie das gleiche zur Höhe, wobei die Breite gleich bleibt. "

Ich bin mir jedoch nicht sicher, wie dies in den Code zu implementieren. Ich habe versucht, aber gescheitert :) Es ist sehr frustrierend, also jede Hilfe in dieser Sache wäre erstaunlich.

Danke.

+0

Ich bin nicht sicher zu bekommen der Punkt, aber Sie können etwas wie folgt versuchen: https://jsfiddle.net/Qg4cV/8/ (Ich fügte gerade 'collideWorldBounds' hinzu und' springen' zum Körper der Felsen in der Schaffung) – jolmos

+0

Ah, das funktioniert auch: 0 danke ist gut xx – Nevershow2016

Antwort

1

Normalerweise erstelle ich einen Geschwindigkeitsvektor, der die "Geschwindigkeit" meiner Objekte darstellt. In jedem Frame füge ich diesen Geschwindigkeitsvektor zum Positionsvektor hinzu. Wenn ich möchte, dass sich mein Objekt in die entgegengesetzte Richtung bewegt, multipliziere ich meinen Vektor mit -1.

Erstellen Sie einen Vektor wie diesen, und wenn Ihr Objekt eine Kante kollidierte, multiplizieren Sie es mit -1.

Sie können eine Menge Dinge, mit dieser Art von Vektor machen, wie glatte Geschwindigkeitsabnahme, InSpace artigen Bewegungen etc ...

zB:

//on init 
var velocity = {x: 10; y: 10}; 
var pos = {x: 10; y:10}; 

//on frame update 
pos.x += velocity.x; 
pos.y += velocity.y 

//on edge collision 
velocity.x = velocity.x * -1; 
velocity.y = velocity.y * -1; 
+0

hmm ich bin mir nicht genau sicher, was du meinst, sorry, sehr neu dazu, wäre es mir möglich, es mir zu zeigen? – Nevershow2016

+0

Sicher, ich bearbeite meine Antwort :) –

+0

Ah dw ich tat es :) – Nevershow2016