Jump & Run mit hittest abfrage?

ignore

Grünschnabel
Hallo zusammen,

habe mir die Grundstruktur eines Jump & Run zusammengebastelt.
Die Boden und Decken Kollision wird mittels hittest ermittelt.
Klappt soweit auch ganz gut, mein Problem ist jetzt nur das mehrere Boden und Decken Objekte ins Spiel kommen:
und ich will ja nicht jedes Objekt einzeln prüfen müssen.

Habe mal die Flash Datei angehängt, wäre super wenn jemand einen Lösungsansatz für mich hat...
denn irgendwie komme ich einfach nicht weiter, egal wie ich es versuche.

Danke
 

Anhänge

  • Game.fla
    28 KB · Aufrufe: 48
Hallo,

wenn der Boden immer gleich hoch ist bietet es sich wohl an, diesen nicht per hitTest sondern durch einen simplen Vergleich der _y Koordinate zu führen. Die Löcher im Boden kann man dann durch hitTests machen (also der hitTest als Bedingung für ein mögliches Durchfallen), muss hier aber Vorsichtig sein dass man den Spieler dann nicht durch die Kanten des eigentlichen Bodens fallen lässt.

So sparst du dir sicherlich einige Abfragen. Sobald das Spiel dann über die Anzeigebreite hinauswächst, sollten diese anderen (nicht angezeigten) Bereiche natürlich nciht getestet werden. Also richte mehrere Bereiche ein, die so breit sind wie die Flash-Bühne, und frage immer nur den ab, in welchem sich dein Spieler grade befindet. Das sollte durch eine gute Movieclip-Struktur machbar sein, bei der man alle mitbewegt beim seitlichen scrollen und dann durch

if(bereich_31._x < 500) {
abfragen()
}

einfach und Ressourcenarm wieder "aktiviert".

Liebe Grüße
B.
 
Danke für die schnelle Antwort, für meinen Boden ist das eine gute Lösung.

Bei der decke kommen dann aber doch mehrere <Objekte zum Einsatz...
Hab nochmal gebastelt und jetzt versteh ich den Hittest befehl garnichtmehr.

In der Fla sind zwei Blöcke beide sollten beim Hit true ausgeben, der eine machts auch brav der andere nicht....

Verstehe das nich...:confused:
 

Anhänge

  • Game2.fla
    29 KB · Aufrufe: 38
Hallo,
du hast mehrere onEnterFrames() die auf die Variable treffer zugreifen und dann noch eine, welche diese dann ausliest. Wenn also block2 berührt wird, schreibt block1 das noch kurz über bevor dann der Hauptframe Wind davon bekommt.

Pack die hitTest-Abfragen lieber in den Haupt onEnterFrame in dem Schlüsselbild der code-Ebene, dann sollte es gehen

Im Zweifelsfall hilft ein trace-Befehl bei solchen Sachen beim Debuggen:

Code:
onClipEvent (enterFrame) {
if (this.hitTest(_root.sprite)){
	_root.treffer = true;
	trace("halloz");
}else{
	_root.treffer = false;
	}
}

Da beim Berühren das "halloz" ausgegeben wird, aber keine andere Reaktion statt findet, kann man auf das onEnterFrame-Problem schließen :)

Liebe Grüße
b.
 
Jetzt habe ich die hittest Abfrage ohne else Verzweigung gemacht, im ersten bild die Variable treffer auf false gesetzt...

bei Berührung gibt der block dann true und die ktion wird ausgefürt und setzt das ganze wieder auf false....

soweit die theorie, klappt auch.... bei den ersten 2 Blöcken.... beim dritten nichtmehr, woran liegt denn sowas?
 

Anhänge

  • Game3.fla
    29,5 KB · Aufrufe: 50
Hey,

der dritte Block hat den selben Instanznamen wie der erste- beide heißen block1. Damit kommt hitTest nicht zurecht und so entsteht dein Fehler.

Nenn ihn "block3" :)

LG,
B.
 
Zurück