Jump n Run-Spiel in Flash - einige Fragen

green_phanta

Erfahrenes Mitglied
Flash Anfänger sucht Hilfe!

so hallo.
ich bin ein anfänger in flash und bräuchte ein paar hilfen bzw vorschläge.
also ich schreibe was ich schon habe und wsa ich noch gerne haben will :) :
ich hab ein jum´n´run game gemacht mit einem hero. der kann jetzt schon hurtig durch die welt spazieren und es gibt bereits gravity. und auch kollisionskontrolle (also hitTest´s).
so im großen und ganzen ist es das.
meine fragen:
um ein "längeres" level zu machen also nicht nur bühne hab ich gemacht:
if(Key.isDown(RIGHT))
{_root._x -= 7}
ist das richtig oder gibt es da eine schönere methode (dieser hier war einfach mein "hausverstand und meine kleinen AS kenntnisse)
2 problem: wie kann ich machen das ein held auf schiefen ebenen rutscht?mit meiner methode gibt es ein kleines problem:
// Gravitation
if (_root.game.falling = true)
{
_root.game.velocity -= _root.game.gravity
this._y -= _root.game.velocity
}
// Hittest
for ( var i = 1; i < 9; i++)
{
var name = eval ("_root.balken_" + i + "_mc");

if (_root.hero_mc.hit_mc.hitTest(name))
{
_root.game.fallin = false;
_root.game.velocity = 0;
this._y = name._y
}
]
"this._y = name._y" das muss man ja schreiben damit er nicht im schlimmsten fall in der plattform stecken bleibt. aber wenn man jetzt von unten rein springt katapulltiert ws ihn plötzlich rauf. und wenn es schräg ist dann, sobald er die plasttf berührt "beamt" er sich zum registrierungspunkt der plattform.... wie kann ich das verhindern.

außerdem: springen hab ich mir auch selbst geschrieben(ohne hilf nur ein Also ich :)
if (Key.isDown(Key.SPACE))
{
this._y -= 15
}
kurz und bündig funktioniert zwar aber wenn man springt und noch in der luft loslässt dann
"kracht" er plötzlich wieder zu boden. dh: er beschleunigt ganz stark nach unten.
wie kann man das anders schreiben damit es eine schöne weich bewegung ist und es nicht darauf reagiert ob jetzt die tast gedrückt ist oder nicht.

weiters ich hab das so gemacht das im held_mc mehrere bilder geneau übereinender sind und sobald er ein powerup was ich gemacht hab berührt ist die_visible von einem auf false und beim anderen auf true ist das gut oder geht es ander besser und trotzdem leicht.
ausser dem hab ich dann auch das powerup auf false gestellt allerdings bleibt es dann an der selben stelle nur das es unsicht bar ist( ich hab dann einfach gesagt .y -= 1000 )
gibt es einen befehl für "zerstören", also ganz weg
und kann man sagen nach 10 sek soll der effekt wieder aufhörhen (blur filter zb)
generell wie kann man filter wieder wegmachen? wenn:
var filter:BlurFilter = new BlurFilter();
filter.blurX = 5
filter.blurY = 5

if(_root.hero_mc.hitTest(_root.powerup2_mc))
{
_root.hero_mc.filters = new Array(filter);

so meine letzte frage: kann man grenzen eines levels bestimmend? also wenn man gegen den rand rennt das man stehen bleibt... nicht vergessen bei scrollender !! bühne?


So Vielen Vielen Dank wenn ihr es nur geschafft habt durchzulesen... wenn jetzt auch noch jemand antwortet wär ich wirklich sehr dankbar. ihr könnt mir ja auch nur zu bestimmten fragen antworten und so....
also noch mal wäre wirklich sehr sehr nett von euch.
Mit freundlichen grüßen
euer green_phanta
 
Hi und willkommen im Forum,

ein paar Dinge vorweg:
  • Bitte achte auf korrekte Groß- und Kleinschreibung - es erleichtert das Lesen Deiner Beiträge. Achte bitte auch auf Zeichensetzung und Strukturierung; Teile Deines Textes sind recht schwer zu entziffern, da nicht klar ist, wo ein Satz (oder ein Abschnitt) aufhört und ein neuer anfängt.

  • Codeausschnitte kannst Du in CODE- oder actionscript-Tags setzen - auch damit erhöhst Du die Lesbarkeit ungemein.

  • Bitte erstelle bei neuen Fragen ein neues Thema (ich habe Dein Posting mal in einen eigenen Thread überführt); weitergehende Fragen zu bestehenden Themen kannst Du natürlich auch in den entsprechenden Threads posten, aber "grabe" bitte keine jahrealten Themen aus. ;)

Zu Deinen Fragen:

1.
Code:
if(Key.isDown(RIGHT))
{_root._x -= 7}
Da gibt es grundsätzlich nicht dran auszusetzen. Ggf. könntest Du einen Key-Listener erstellen, der auf keyUp- und keyDown-Ereignisse reagiert.

2. Bei komplexeren Kollisionen ist es meist sinnvoller, mit "Cuepoints" zu arbeiten, d.h. Du setzt um Dein Sprite eine Reihe kleiner Punkte, die alle einzeln auf hitTest überpfrüft werden. Damit kannst Du herausfinden, an welcher Position Dein Sprite mit der Umgebung kollidiert und die "Abprallrichtung" festlegen.

3.
kurz und bündig funktioniert zwar aber wenn man springt und noch in der luft loslässt dann
"kracht" er plötzlich wieder zu boden. dh: er beschleunigt ganz stark nach unten.
Du musst Deiner Geschwindigkeitsvariable (vertikale Geschwindigkeit) pro Frameaufruf einen kleinen Wert hinzufügen (gravity?), dann sollte der Sprite langsam beschleunigt werden,

4.
sobald er ein powerup was ich gemacht hab berührt ist die_visible von einem auf false und beim anderen auf true ist das gut oder geht es ander besser und trotzdem leicht.
Ich könnte mir keine "bessere" Methode vorstellen, wenn es einfach um den Austausch zweier Bilder geht. Denkbar wäre auch eine Unterteilung in Frames, aber einen "Vorteil" bringt das auch nicht. Warum bist Du mit Deiner Vorgehensweise unzufrieden?

5.
gibt es einen befehl für "zerstören", also ganz weg
Ist das eine Frage (Fragezeichen ...)? Probiers mal mit "removeMovieClip".

6.
und kann man sagen nach 10 sek soll der effekt wieder aufhörhen
Schau mal in die Referenz unter "setInterval".

7.
generell wie kann man filter wieder wegmachen?
In dem Du der Filter-Eigenschaft des Objektes ein leeres Array zuweist (siehe Referenz).

8.
kann man grenzen eines levels bestimmend? also wenn man gegen den rand rennt das man stehen bleibt... nicht vergessen bei scrollender !! bühne?
Merke Dir irgendwo die Länge des Levels und überprüfe die Position Deines Sprites. Wenn die Annzeige scrollt, musst Du die Position des Level-MCs natürlich mit einberechnen.

Gruß
.
 
2. Bei komplexeren Kollisionen ist es meist sinnvoller, mit "Cuepoints" zu arbeiten, d.h. Du setzt um Dein Sprite eine Reihe kleiner Punkte, die alle einzeln auf hitTest überpfrüft werden. Damit kannst Du herausfinden, an welcher Position Dein Sprite mit der Umgebung kollidiert und die "Abprallrichtung" festlegen.

Könntest du mir vielleicht erklären wie man Cue - Points erstellt?

3. Du musst Deiner Geschwindigkeitsvariable (vertikale Geschwindigkeit) pro Frameaufruf einen kleinen Wert hinzufügen (gravity?), dann sollte der Sprite langsam beschleunigt werden,

Wie meinst du das? was soll ich da ändern? Ich hab dir im anhang mal mein kleines game
mit gegeben vl könntest du einen Blick darauf werfen.

6. Schau mal in die Referenz unter "setInterval".

Auch mit Referenz, ... ich verstehe das Command nicht. :-(

8. Merke Dir irgendwo die Länge des Levels und überprüfe die Position Deines Sprites. Wenn die Annzeige scrollt, musst Du die Position des Level-MCs natürlich mit einberechnen.

Die Position? Versteh nicht ganz was du damit meinst... Wie soll ich denn die mit einberechnen?

Vielen Dank Noch einmal.
 

Anhänge

Hi,

Könntest du mir vielleicht erklären wie man Cue - Points erstellt?
Die Datei "cuepoints.zip" enthält ein Beispiel dazu, das ich hier im Forum schon einmal gepostet hatte.

Wie meinst du das? was soll ich da ändern?
Ehrlich gesagt durchschaue ich Deine Konstruktion in dieser Hinsicht nicht ganz. Du setzt z.B. die Variable "falling" immerzu auf "true" (ich nehme an, es soll ein Vergleich sein, dann brauchst Du aber 2 Gleichheitszeichen), und zusätzlich wird auch "velocity" auf 0 gesetzt. Die Datei "jump.zip" enthält ein kleines Beispiel, wie ich die Bewegungssteuerung angehen würde.

Auch mit Referenz, ... ich verstehe das Command nicht.
Auch wenn das der Fall ist, glaube Dir nicht, dass Du keines der unzähligen Beispiele zu hitTest, die die Forums-Suchfunktion ausspuck, nicht verstanden hast. ;) Kleines Beispiel:
Code:
// Die Funktion "machen" in 2 Sekunden aufrufen:

var iv = setInterva(machen, 2000);

function machen() {
    trace("MACHEN!");
    clearInterval(iv);
}

Wie soll ich denn die mit einberechnen?
Um Dir das zu sagen, hätte ich sehen müssen, wie Du das Scrolling bisher gelöst hast. ... Leider hast Du eben diesen Teil aus Deiner Datei entfernt.

Ich würde den gesamten Level samt "Hero" in einen weiteren MC packen, dort den Sprite ganz normal bewegen lassen und den Level-MC einfach auf der Bühne verschieben, so dass der Sprite immer sichtbar bleibt. Dann sparst Du Dir auch aufwändige Berechnungen. Die Datei "scrolling.zip" enthält dazu ein kleines Beispiel.

Gruß
.
 

Anhänge

Zurück