2016-08-31 5 views
-1

Ich mache ein Platformer-Spiel mit HTML5 Canvas. Ich habe noch keinen Hauptcharakter, also benutze ich jetzt einen Ball. Ich versuche es so zu machen, dass der Ball nicht durch den Grasblock gehen kann. Ich benutze eine Liste, um die Werte meiner Karte zu speichern, und dann 2 if-Anweisungen, um die Werte der Liste in eine Karte zu verwandeln, also weiß ich nicht, wie man eine Kollision zwischen dem Ball und dem Grasball unter Berücksichtigung der Grasblöcke erkennt könnte irgendwo auf der Karte sein.Objekt Kollisionen HTML5 Canvas

Meine Frage ist: Wie kann ich eine Kollision zwischen dem Ball und dem Grasblock ohne harte Codierung machen, muss es schnell sein, und wenn ich eine Bibliothek brauche, zeigen Sie bitte ein Beispiel, wie man es in meinem benutzt Lage.

Mein Code ist hier: https://drive.google.com/open?id=0B7OJnVpBNrkDTlA0amdzMkdrRnM

+0

Sie müssen im Grunde überprüfen, ob sie selbst schlagen, während das Spiel läuft – Hydro

+0

Ich würde vorschlagen, eine Spiel-Engine zu verwenden: https://html5gameengine.com/ –

+0

Entweder müssen Sie Ihr eigenes Kollisionssystem (A etwas Mathe, aber nicht wirklich schwer), oder benutze eine existierende Game Engine. Es gibt einige gute, die herumschweben, werfen Sie einen Blick auf "Phaser", der viel mehr als nur Kollision handhaben wird, denn Sie wollen Nutzen daraus ziehen, was es bieten kann. – DBS

Antwort

0

Hier ist eine grundlegende Lösung für Ihr Problem, aus dem Sie bauen auf:

https://plnkr.co/edit/5c08NrVQh44hsq1BFX9X?p=preview

Zusammengefasst:

  • I erstellt ein neues mehrdimensionales Array namens , um eine Referenz für, wo die Ball kann und kann nicht reisen.
  • Ich habe die ballLocationCol und ballLocationRow Werte verwendet, die Sie bereits hatten (aber auskommentiert), um festzustellen, welche Kacheln der Ball gerade über ist.
  • Wir überprüfen dann über die neue canMoveHere Funktion, ob der Ball die aktuelle Kachel passieren kann und umgekehrt.

N.B. Wenn Sie dieses Projekt nur zum Lernen durchführen, schreiben Sie den Code für die Kollisionserkennung auf jeden Fall selbst auf. Wenn nicht, wirst du es wahrscheinlich produktiver finden, wie einige Kommentatoren bereits vorgeschlagen haben, eine Spielengine zu verwenden.

+0

Ich weiß nicht, was es mit mir ist, aber ich bevorzuge keine Bibliotheken zu verwenden, wenn ich nicht muss. Aber ich denke, das sollte funktionieren. Ich benutzte ein Double-Array, um meine Maps zu erstellen, aber ich begann ein einzelnes Array zu verwenden, weil ich einen Kurs belegt hatte. Danke dafür! – Jordan