Kollisionskontrolle von gleichen MCs

mani00

Grünschnabel
Hallo,

ich mach gerade ein jump&run spiel und stehe da vor einem problem.

Ich hab einen Hero als MC der mit der Tastatur gesteuert wird. Und ich hab einen Gegner der still da steht (auch ein MC). Jeder MC (Hero & Gegner) haben 2 hitbereiche.
Hero: Körper und Beine
Gegner: Körper und Kopf

Daraus ergeben sich folgende Kollisionen:

Hero (Beine) & Gegner (Kopf) ==> Gegner KO
Hero (Körper) & Gegner (Körper) ==> Hero KO

So das funktioniert auch super... Doch jetzt möchte ich meinen Gegner öfters rein geben als nur einmal und da ist mein problem. Denn wenn ich zb 10 solche gegner ins Level packen will, müsste ich ja 10 kollisionsabfragen schreiben, und jeden Gegner extra abfragen ob er kollidiert...

Mein Hero muss von Plattform zu Plattform springen und da hab ich das so gemacht, das ich eine Plattform gezeichnet habe (als MC) und die dann ein paar mal reingezogen hab und jede plattform heißt nun plattform_1_mc, plattform_2_mc usw...
Das ganze wird dann in einer for-schleife überprüft ob der Hero eine von denen berührt...

ActionScript:
this.hero_mc.onEnterFrame = function()
{
for ( i=1; i <= 2; i++ )
{
var name = eval("this.platte_" + i + "_mc");
if ( _root.lv1_mc.hero_mc.hitbereich_mc.hitTest(name))
{
_root.game.falling = false;
_root.game.velocity = 0;

}
}
}

Das funktioniert auch super... Kann ich das irgendwie auch in so einer schleife abfragen, ob mein hero mit irgendeinem Gegner kollidiert?
Denn sobald ich das ganze in eine schleife packe hat er probleme mit dem hit usw...

hat jemand dafür eine lösung oder einen link zu einem beispiel file wo sowas gelöst wurde...
wäre echt super
thx
lg

Ps: Bitte einfache erklährungen, da ich noch Neuling in Flash bin
 
Hi und willkommen im Forum,

prinzipiell bleibt Dir keine andere Möglichkeit, als alle Gegner laufend auf Kollision mit der Hauptfigur zu testen.

Wenn alle Gegner Instanzen des selben MovieClips sind, wäre es allerdings am einfachsten, im Code des Gegners eine onEnterFrame-Methode zu diesem Zweck anzulegen (Vorteil: wird ein Gegner vernichtet, muss die Kollisionsprüfung nicht mehr fortgeführt werden:
Code:
// auf der Zeitleiste des MC "Gegner":

var is_ko = false; // noch lebt diese Figur

this.onEnterFrame = function() {
  if (is_ko) delete this.onEnterFrame; // wenn tot, brauche ich nicht mehr zu testen
  if (this.kopf.hitTest(_root.hero.bein)) { // trifft sein Bein auf meinen Kopf ...
    is_ko = true; // .. dann sterbe ich
  } else if (this.bein.hitTest(_root.hero.kopf)) { // ist es umgekehrt ...
    _root.hero.sterben(); // ... stirbt er. ;)
 }
}

Gruß
.
 
Zurück