Einzelnen Beitrag anzeigen
Alt 14-07-2010, 15:12   #10 (permalink)
joeydee
Neuer User
 
Registriert seit: Nov 2005
Beiträge: 548
Also die Funktion wie du den nächten Boden in der Map von einem bestimmten Punkt aus gesehen findest, dürftest du ja jetzt haben wenn ich richtig verstehe. Mach daraus eine eigene Funktion, etwa so:
ActionScript:
  1. function findNextGround(px:int,py:int){
  2.     var gy:int;
  3.     while(gy!=py && py>0 && py<550){
  4.         gy=py;
  5.         if(!level.hitTestPoint(px,py+1,true))py++;
  6.         if(level.hitTestPoint(px,py,true))py--;
  7.     }
  8.     return py;
  9. }

In jedem Frame: Finde das nächste Boden-Y für die aktuellen Wurmkoordinaten, aber setze ihn nicht gleich dorthin.

a) Wenn der Wurm nach oben muss, setze ihn direkt dorthin (Wurm war im Boden versunken).

b) Wenn er nach unten muss, lass ihn nach unten fallen (Wert hinzuaddieren).

c) Wenn er weder nach oben noch nach unten muss, sitzt er auf Grund. Berechne nun die Steigung:
Finde das nächste Boden-Y jeweils ein paar Pixel links und rechts von der Wurmkoordinate. Aus dem Höhenunterschied und dem horizontalen Abstand der beiden Messpunkte kannst du eine Steigung (slope) errechnen (Mathe Mittelstufe lässt grüßen: DeltaY/DeltaX):
ActionScript:
  1. var rad:int=5;
  2. var y1=findNextGround(wurm.x-rad,wurm.y);
  3. var y2=findNextGround(wurm.x+rad,wurm.y);
  4. var slope:Number=(y2-y1)/(rad*2);
Nun kannst du entscheiden was passiert: über/untersteigt der slope einen bestimmten Grenzwert, bewege den Wurm in die entsprechende x-Richtung (jeweils hangabwärts) und verbiete das Bewegen in die andere Richtung (hangaufwärts). Du musst dich hier übrigens nur um die Seitwärtsbewegung kümmern, auf/ab wird schon unter a und b erledigt.
joeydee ist offline   Mit Zitat antworten