45°schräg laufen können

  • 45°schräg laufen können

    Ich habe diesen "magic-code"

    obj_player, (teil vom step_event)

    GML-Quellcode

    1. //this is the magic code, first it checks if the player can move to the right,
    2. //if not, then it will start looping to see if it can go to right with a pixel up..
    3. for(i=0;i<abs(wspeed);i+=0.5) {
    4. var st, st2; st = place_free(x,y+2); st2 = sign(wspeed)/2;
    5. if(!st && place_free(x+st2*0.6,y+2)) { x+=st2*0.6; y+=2; }
    6. else if(!st && place_free(x+st2*0.8,y+1)) { x+=st2*0.8; y+=1; }
    7. else if(place_free(x+st2,y)) { x+=st2; }
    8. else if(!st && place_free(x+st2*0.8,y-1)) { x+=st2*0.8; y-=1; }
    9. else if(!st && place_free(x+st2*0.6,y-2)) { x+=st2*0.6; y-=2; }
    10. else if(!st && place_free(x+st2*0.4,y-3)) { x+=st2*0.4; y-=3; }
    11. else break;
    12. }
    Alles anzeigen


    und
    obj_player, collision mit parent_block:

    GML-Quellcode

    1. //if the collided object is solid perform actions
    2. if(other.solid == true) {
    3. //make the player contact solid
    4. if(vspeed < 0) move_contact_solid(90,5);
    5. else move_contact_solid(270,5);
    6. //set the vertical speed to 0, important!
    7. vspeed=0
    8. //if he has the jump sprite, we want him to show other sprites
    9. if(sprite_index == spr_jump_left) {
    10. if(wspeed = 0) sprite_index = spr_idle_left
    11. else sprite_index = spr_run_left
    12. } else if(sprite_index == spr_jump_right) {
    13. if(wspeed = 0) sprite_index = spr_idle_right
    14. else sprite_index = spr_run_right
    15. }
    16. }
    Alles anzeigen


    (die blocks haben keinen code, sondern nur ein parent_block. Der entsprechende Code dafür ist im player_collision event)

    Was ich machen möchte ist, dass der player 45° schräge Schrägen hochlaufen kann.
    22,5° schräge Schrägen kann er laufen. Mit 45° grad mein ich schrägen so:


    EDIT: Was ich noch sehr komisch finde, ist wenn ich diese Grafik transparent mache,und parent: parent_block, und dann davor laufe, ist es sozusagen viereckig, nur die Ecke oben rechts, ist unsichtbar.

    Hier ist die gmk Datei:
    ->hier<-

    Falls es nicht an den oben angegebenen Codes liegt, dass es nicht geht, dann bitte ich euch in der gmk zu gucken.

    Vielen Dank im voraus!

    mfg Timma

    (hoffe mal ich habe jetzt nichts gefragt, was es schonmal gab, hab nämlich nichts in der SuFu gefunden)

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Timma ()


  • [...]Außerdem sind bei der Foxengine doch 45° Schrägen dabei (!).


    Waren sie mal am Anfang. Ich habe aber gar nichts an den Codes geändert, deswegen finde ich das so komisch das es nicht geht. Es kann auch daran liegen, dass diese Schrägen, (siehe Bild im ersten Post), sozusagen viereckig sind^^ Man sieh zwar nur, unten links das braune, aber sie sind halt irgendwie trotzdem eckig!

    mfg Timma
  • Original von Timma

    [...]Außerdem sind bei der Foxengine doch 45° Schrägen dabei (!).


    Waren sie mal am Anfang. Ich habe aber gar nichts an den Codes geändert, deswegen finde ich das so komisch das es nicht geht. Es kann auch daran liegen, dass diese Schrägen, (siehe Bild im ersten Post), sozusagen viereckig sind^^ Man sieh zwar nur, unten links das braune, aber sie sind halt irgendwie trotzdem eckig!

    mfg Timma
    Ich hoffe jetzt mal, dass du bei dem Sprite "Precise collision checking" aktiviert hast.
    Kann ich leider nicht nachvollziehen, da das Sprite in der herunterladbaren Datei nicht zu finden ist.
    Hier werden sie geholfen:
    [Regeln] [GML] [Hilfe] [Suche] [Posten] [Duden.de]
    [Wenn das alles nicht mehr hilft] [Dunning-Kruger]


    "Die Vernunft sollte Autorität definieren; nicht umgekehrt!"
    "Selber denken regt das Gehirn an."
    - Niffel f.k.a. Kilik