as3 hitTestObject (), um alle Treffer
In meinem Spiel habe ich die person, die schießt, und ich brauche, wenn die Kugel traf etwas zu löschen, die sprite.
var i = 1;
var f:Function;
addChild(bullet);
bullet.addEventListener(Event.ENTER_FRAME, f = function(){
bullet.x += movex*i;
bullet.y += movey*i;
i++;
});
Wie man hitTestObject()
mit alles?
InformationsquelleAutor Andrey | 2012-12-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es eine Reihe von Techniken zur Kollisionserkennung, die jedoch mit der Methode zu verwenden, hängt von der Ziel-Objekt-Form. Pixel perfect hittesting ist die genaue collision detection-Methode, die jedoch sehr langsam. Geometrische hittesting ist wahrscheinlich die Schnellste und kann sehr genau sein wenn es richtig gemacht. Ein Nachteil der Verwendung
hitTestObject
ist, dass es ziemlich langsam. Also meine Meinung, wenn Sie benötigen, um eine große pool-Objekt ist der Einsatz von alternativen Methoden für die Kollisionserkennung.Definitiv für die Objekt-zu-Objekt Kollisionserkennung, die Sie brauchen, um eine Schleife über jedes Ziel-Objekt in ein array (ist aber für die performance-Verbesserungen in einer
<Vector>
) und testen, ob die Kugel auf das Ziel-Objekt.Es sich lohnt, Lesen Sie diesen Artikel für weitere Erläuterungen:
http://plasticsturgeon.com/2011/03/actionscript-collision-detection-u-circle-circle-collision-detection/
http://www.mikechambers.com/blog/2009/06/24/using-bitmapdata-hittest-for-collision-detection/
http://www.mikechambers.com/blog/2009/06/25/strategies-for-optimizing-collision-detection-with-bitmapdata-hittest/
Und hier ist eine Bibliothek, die die harte Arbeit machen:
http://code.google.com/p/collisiondetectionkit/
Hier ist eine sehr kurze Beschreibung, wie Sie können es verwenden: stanford.edu/~aleeper/EPGY/samples/...
InformationsquelleAutor Simo Endre
Ich würde es angehen wie diese (ich nehme an, die Kugeln sind MovieClips, die Sie hinzufügen aus der Bibliothek).
Ich bin mit zombies und Pflanzen als Beispiele von MovieClips auf der Bühne, die Sie manuell einleiten in die liveObjects array.
Größere Spiele offensichtlich Sie würde nicht hart codieren, aber ich bin versucht zu abtract Weg, die extra-Sachen, um das Beispiel einfacher zu verstehen ist)
Ich kann falsch deine Absicht, aber dein code scheint zu empfehlen das hinzufügen einer separaten ENTER_FRAME listener für jede Kugel im Spiel, im Gegensatz zu einem einzigen Spiel-Schleife? Darf ich Fragen, warum?
Ich weit aus empfehlen, aber ich bin Verlängerung der code in der Frage. Vielleicht, in seinem Fall hat er nur 1 Kugel (weiß ich nicht, denn er hat nicht dargelegt,) - also muss ich gehen auf der Annahme, er weiß, dass sein Projekt und hat sich entschieden, fügen Sie Ereignis-listener, um die Kugel, auf die ich erweitert den code um die Frage zu beantworten um Treffer tests (und nicht Ereignis-Listener). Aber ich ganz heftig Zustimmen-Spiel loops
InformationsquelleAutor Chris
Hoffentlich haben Sie einige array, das hält eine Referenz auf alle feindlichen sprites. Einfach eine Schleife durch, dass der Aufruf hitTestObject() mit der Kugel.
InformationsquelleAutor mitim