HTML5 + JS: Kollisionserkennung für drehbares Zeichen

8

Ich arbeite an dem Kollisionssystem für mein Spiel; Das ist ein Top-Down-Shooter, der Charakter ist immer statisch - und alles andere (Map / Level) bewegt sich um ihn herum.

Der Buchstabe dreht sich auch so, dass er immer auf die Mausposition zeigt.

Wenn ich das bedenke, kann ich meinen Kopf nicht um mein Kollisionssystem herum bewegen, was die Charakterdrehung berücksichtigen muss, richtig?

Ich möchte im Grunde nur überprüfen, ob das gegebene Objekt überhaupt meinen Charakter / Sprite berührt. Ich bin mir nicht sicher, ob die Mathematik richtig ist.

Das ist meine Kollisionserkennung (jedes Update genannt):

%Vor%

Auch nicht sicher, ob dies relevant ist, aber das ist die Transformation, die verwendet wird, um mein Karten-Canvas zu verschieben:

%Vor%

Würde es sehr schätzen, wenn mir jemand hier geholfen hätte :) Danke!

    
Oliver Jones 24.01.2013, 20:30
quelle

2 Antworten

2

Ich habe diesmal Ludum betreten und ein Tutorial gemacht, um meinen Basiscode zu erklären. Die Tutorials finden Sie hier: Ссылка

Dies zeigt ein Beispiel für eine kreisbasierte Kollisionserkennung - bitte benutzen Sie den Code. Der folgende Code ist eine Anpassung dieses Codes für die allgemeine Verwendung:

%Vor%

BEARBEITEN

Die Math.abs-Aufrufe wurden entfernt, wie in den Kommentaren durch vals angegeben.

    
PJeffes 29.01.2013, 17:19
quelle
4

Ich persönlich würde mir keine Sorgen machen, dass der Charakter kollidiert. Der Grund, warum ich das sage, ist einfach.

Lass uns sehen, dass du sehr nahe an einer Wand gehst. Dann drehst du dich, um der Maus zu folgen, und der Sprite überlappt dann die Wand. Was tust du jetzt? Entweder du hörst die Drehung auf, was zu vermeidenden Bewegungen führen würde, oder du lässt das Sprite überlappen und der Spieler bleibt stecken, bis er sich wieder frei dreht.

Meine Präferenz wäre ein Kollisionskreis. Wenn der Spieler sich näher als R Pixel von der Wand entfernt befindet, zählt es als eine Kollision und stoppt den Spieler vom Bewegen. Auf diese Weise wird der Sprite selbst dann, wenn der Spieler dreht, niemals dazu führen, dass der Spieler feststeckt und er kann sich immer von der Wand entfernen.

    
Niet the Dark Absol 28.01.2013 00:46
quelle