Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 05-10-2003, 17:40   #1 (permalink)
Neuer User
 
Benutzerbild von dnex5
 
Registriert seit: May 2003
Ort: Österreich
Beiträge: 90
Question Springen á Super Mario

Hy Leute!

Ich habe in einem Flashfilm den MC "yoshi", "boden" und 2 Plattformen "plattform1" und "plattform2". Zum Springen von Yoshi (direkt im MC yoshi) habe ich im Internet folgenden Code gefunden:

ActionScript:
  1. onClipEvent (load) {
  2.     boden = 205;
  3.     filmbreite = 250;
  4.     radius = _width/2;
  5.     jumpheight = 200;
  6.     xspeed = 30;
  7.     maxspeed = 50;
  8.     jumping = true;
  9. }
  10. onClipEvent (enterFrame) {
  11.     xpos = _x;
  12.     ypos = _y;
  13.     // Schwerkraft
  14.     yspeed += 40;
  15.     // Beschleunigung
  16.     xpos += xspeed/4;
  17.     ypos += yspeed/4;
  18.     // Berührt das Objekt den Boden?
  19.     if (ypos+radius>=boden) {
  20.         yspeed = 0;
  21.         ypos = boden-radius;
  22.         jumping = false;
  23.     }
  24.     // Kollision mit Bühnenrand?
  25.     if (xpos+radius>filmbreite) {
  26.         xpos = radius;
  27.     }
  28.     if (xpos-radius<0) {
  29.         xpos = filmbreite-radius;
  30.     }
  31.     // Abbremsen
  32.     if (!pressing && !jumping) {
  33.         xspeed *= 0.9;
  34.     }
  35.     // Aktualisierung der Koordinaten
  36.     _x = xpos;
  37.     _y = ypos;
  38. }
  39. onClipEvent (keyDown) {
  40.     pressing = true;
  41.     // Nach-Oben-Taste
  42.     if (Key.isDown(Key.UP)) {
  43.         if (!jumping) {
  44.             yspeed -= jumpheight;
  45.             jumping = true;
  46.         }
  47.     }
  48.     // Nach-Links-Taste
  49.     if (Key.isDown(Key.LEFT) && !jumping) {
  50.         if (xspeed>-maxspeed) {
  51.             xspeed -= 4;
  52.         }
  53.     }
  54.     // Nach-Rechts-Taste
  55.     if (Key.isDown(Key.RIGHT) && !jumping) {
  56.         if (xspeed<maxspeed) {
  57.             xspeed += 4;
  58.         }
  59.     }
  60.     updateAfterEvent();
  61. }
  62. onClipEvent (keyUp) {
  63.     pressing = false;
  64. }

Nun würde ich aber gerne haben, das Yoshi auch auf Plattformen springen kann - wie löse ich das am besten mit einer Kollisionsabfrage? Vielen Dank für eure Hilfe!
Angehängte Dateien
Dateityp: zip yoshi.zip (4,2 KB, 49x aufgerufen)
__________________
Was denkbar ist, ist programmierbar!
Flash.Nepraunig.com
dnex5 ist offline   Mit Zitat antworten
Alt 05-10-2003, 18:43   #2 (permalink)
Hirnverbrannt
 
Benutzerbild von NastyFrog
 
Registriert seit: Aug 2001
Ort: AUSTRIA
Beiträge: 2.020
Hmm, bei deinem Ansatz könntest du einfach die Bodenhöhe zwischen bestimmten Koordinaten und ab einer bestimmten Höhe auf die Höhe der Plattform stetzen, aber am einfachsten is es mit einem unsichtbaren MC und dann einen hitTest.
__________________
50 Seiten hardcore ActionScript von den Grundlagen bis zu 3D Darstellungen.... eben eine Abendlektüre.

Dogs fucked the Pope, no fault of mine. Watch out! ... Why money? My name is Brinks; I was born ... born? Get sheep over side ... women and children to armored car ... orders from Captain Zeep.(Hunter S. Thompson)
NastyFrog ist offline   Mit Zitat antworten
Alt 05-10-2003, 18:44   #3 (permalink)
Neuer User
 
Benutzerbild von virtualize
 
Registriert seit: Aug 2003
Ort: Zürich
Beiträge: 120
hab direkt unter dem onClipEvent (enterFrame) eine Kollisionsabfrage eingefügt, wenn du mehr plattformen hast, dann setzte die begrenzung in der for schleife von drei auf anzahlDeinerPlattformen +1 und benenne die plattformen fortlaufend...
ActionScript:
  1. onClipEvent (load) {
  2.     boden = 205;
  3.     filmbreite = 250;
  4.     radius = _width/2;
  5.     jumpheight = 200;
  6.     xspeed = 30;
  7.     maxspeed = 50;
  8.     jumping = true;
  9. }
  10. onClipEvent (enterFrame) {
  11.          // Hier eine kollisionsabfrage für die plattformen eins und 2
  12.     for (i=1; i<3; i++) {
  13.         if (this.hitTest(_root["plattform"+i])) {
  14.             boden = _root["plattform"+i]._y-(_root["plattform"+i]._height/2);
  15.             break;
  16.         } else boden = 205;
  17.     }
  18.     xpos = _x;
  19.     ypos = _y;
  20.     // Schwerkraft
  21.     yspeed += 40;
  22.     // Beschleunigung
  23.     xpos += xspeed/4;
  24.     ypos += yspeed/4;
  25.     // Berührt das Objekt den Boden?
  26.     if (ypos+radius>=boden) {
  27.         yspeed = 0;
  28.         ypos = boden-radius;
  29.         jumping = false;
  30.     }
  31.     // Kollision mit Bühnenrand?
  32.     if (xpos+radius>filmbreite) {
  33.         xpos = radius;
  34.     }
  35.     if (xpos-radius<0) {
  36.         xpos = filmbreite-radius;
  37.     }
  38.     // Abbremsen
  39.     if (!pressing && !jumping) {
  40.         xspeed *= 0.9;
  41.     }
  42.     // Aktualisierung der Koordinaten
  43.     _x = xpos;
  44.     _y = ypos;
  45. }
  46. onClipEvent (keyDown) {
  47.     pressing = true;
  48.     // Nach-Oben-Taste
  49.     if (Key.isDown(Key.UP)) {
  50.         if (!jumping) {
  51.             yspeed -= jumpheight;
  52.             jumping = true;
  53.         }
  54.     }
  55.     // Nach-Links-Taste
  56.     if (Key.isDown(Key.LEFT) && !jumping) {
  57.         if (xspeed>-maxspeed) {
  58.             xspeed -= 4;
  59.         }
  60.     }
  61.     // Nach-Rechts-Taste
  62.     if (Key.isDown(Key.RIGHT) && !jumping) {
  63.         if (xspeed<maxspeed) {
  64.             xspeed += 4;
  65.         }
  66.     }
  67.     updateAfterEvent();
  68. }
  69. onClipEvent (keyUp) {
  70.     pressing = false;
  71. }
viel spass
virtualize ist offline   Mit Zitat antworten
Alt 06-10-2003, 17:53   #4 (permalink)
Neuer User
 
Benutzerbild von dnex5
 
Registriert seit: May 2003
Ort: Österreich
Beiträge: 90
@virtualize

Vielen lieben Dank für dein Script - funktioniert tadellos!

Liebe Grüße
__________________
Was denkbar ist, ist programmierbar!
Flash.Nepraunig.com
dnex5 ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 10:07 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele