Steigungen hochlaufen, ohne x,y?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Steigungen hochlaufen, ohne x,y?

    Hi!

    Ich arbeite zur Zeit an einem J&R und mein größtes Problem sind die Steigungen.
    Ich benutze:

    GML-Quellcode

    1. if keyboard_check(vk_right)
    2. {
    3. hspeed -= 0.2
    4. }


    Also, arbeite mit h und vspeeds. Aber um Steigungen hochzulaufen braucht man die x und y koordinate... Oder?
    Ich will ja, das man beim Laufen langsam Anfängt und immer schneller wird. Das geht ja mit "x -= 2" usw. nicht.

    Kann mir einer helfen? Wie kann man Steigungen hochlaufen obwohl man hspeeds benutzt?
    15.04.09/ Zustand: CRACK
  • doch es funktioniert auch mit speeds,

    GML-Quellcode

    1. if keyboard_check(vk_right)&&place_free(x+hspeed, y) { hspeed -= 0.2 }
    2. else
    3. {hspeed -=0.2; y-=2*(-)hspeed}//oder halt eine andere zahl je nach steigungsgrad


    ansonsten versuchs doch mal mit antroids "arccosinus" kollisions rundungs engine^^

    findeste hier im forum oder auf:

    google.de->antroid accosinus->"Suchen"?

    nichtmehr da weil datenbank nicht mehr existiert, naja das war die beste collisions engine^^

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von Genesis ()

  • Hier ein Grundgerüst, dass allerdings noch zu modifizieren ist, damit es gut funktioniert:

    GML-Quellcode

    1. var point1,point2;
    2. if hspeed>0//schlecht, mach das besser mit keyboard_check
    3. {
    4. for(i=1;i<sprite_height;i+=1) {//check, kollisions punkt 1
    5. if collision_point(x-5,y+i,wall,1,0) {
    6. point1=i;
    7. break;
    8. }
    9. }
    10. for(i=1;i<sprite_height;i+=1) {// kollisionspunkt 2
    11. if collision_point(x+5,y+i,wall,1,0) {
    12. point2=i;
    13. break;
    14. }
    15. }
    16. }
    17. else if hspeed<0
    18. {...}
    19. steigung=point_direction(-5,point1,5,point2)//die erechnete Steigung aus den beiden Punkten
    20. if keyboard_check(vk_right)&&place_free(x+hspeed, y) { hspeed -= 0.2 }
    21. else
    22. if keyboard_check(vk_right)&&steigung<45//maximale Steigung in Grad
    23. {hspeed -=0.2; y-=steigung/45*hspeed}
    Alles anzeigen


    Jetzt sollte es für beliebige Steigungen funktionieren, du musst das ganze allerdings auch noch für die linke Laufrichtung definieren.
    "das war meine letzte flamewar PM an dich ."
  • Antroid Arccosinus

    Hier das coole Skript von Antroid

    GML-Quellcode

    1. ////////////////////////////////////////////////////////////////
    2. // script name: move_round
    3. // creator: ANTROID
    4. // date: 30.07.2003
    5. //
    6. // description: Dieses Script rundet die Kollision!
    7. //
    8. // arguments: argument0: Maximale Abrundung in Pixeln.
    9. //
    10. // remarks: Sollte in jedem Step ausgeführt werden!
    11. // Gibt wieder, ob Abrundung stattgefunden hat!
    12. // Object muss solid sein! Gibt die Länge der
    13. // gerundeten Strecke in Pixeln wieder.
    14. ////////////////////////////////////////////////////////////////
    15. var move_round_ok,move_round_tool,move_round_dis;
    16. move_round_dis=0
    17. if (!place_free(x+hspeed,y+vspeed))
    18. {
    19. move_round_ok=false
    20. move_round_tool=1
    21. move_round_dis=1
    22. while (move_round_dis<=round(argument0))
    23. {
    24. if (place_free(x+hspeed+cos(degtorad(direction+90))*move_round_tool*move_round_dis,
    25. y+vspeed-sin(degtorad(direction+90))*move_round_tool*move_round_dis))
    26. {
    27. x += cos(degtorad(direction+90))*move_round_tool*move_round_dis
    28. y -= sin(degtorad(direction+90))*move_round_tool*move_round_dis
    29. move_round_ok=true
    30. break;
    31. }
    32. else
    33. {
    34. if (move_round_tool=1)
    35. {
    36. move_round_tool=-1
    37. }
    38. else
    39. {
    40. move_round_tool=1
    41. move_round_dis+=1
    42. }
    43. }
    44. }
    45. if (!move_round_ok)
    46. {
    47. speed=0
    48. }
    49. }
    50. return move_round_dis
    Alles anzeigen
  • Benutzer online 1

    1 Besucher