Collisions Problem

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

  • Collisions Problem

    Hallo

    Ich bin neu und versuche ein spiel zu erstellen.nur brauche ich hilfe

    Und zwar hab ich probleme mit der collision...

    also wenn mein player gegen die rechte mauer lauft passt alles
    läuft er gegen die linke springt der player plötzlich wieder nach rechts um ein paar px.
    und wie kann ich einen doppelsprung programmieren???

    ich habe ein player ..und eine wand objekt.die wand hab ich auf solid gemacht

    hier mein code:
    OBJECT_PLAYER
    CREATE EVENT:
    image_speed=0;


    OBJECT_PLAYER
    STEP EVENT:

    GML-Quellcode

    1. if keyboard_check(vk_right) or keyboard_check(ord("D")) and place_free(x+4,y)
    2. {
    3. x+=4
    4. sprite_index=spr_player
    5. }
    6. if keyboard_check(vk_left) or keyboard_check(ord("A")) and place_free(x-4,y)
    7. {
    8. x-=4
    9. sprite_index=spr_player_links
    10. }
    11. //////JUMP
    12. if keyboard_check(vk_space) and !place_free(x,y+1)
    13. {
    14. vspeed=-7
    15. }
    16. /////GRAVITY
    17. if place_free(x,y+1)
    18. {
    19. gravity_direction=270
    20. gravity=0.7
    21. }else
    22. {gravity=0}
    Alles anzeigen



    OBJECT_PLAYER
    COLLISION EVENT:

    GML-Quellcode

    1. move_contact_solid(direction,12)
    2. vspeed=0






    bitte um hilfe ich danke euch

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

  • Du hast bei move_contact_solid() direction angegeben, da du sie aber nie veränderst bleibt sie immer auf 0 und 0 ist +x also nach rechts. D.h. du änderst im Step-Event auch die direction (bei nach links laufen zu 180 und bei nach rechts laufen 0) oder du benutzt eine neue Variable, so würde ich es machen. Das würde dann so aussehen:

    Verbessert
    CREATE EVENT:

    GML-Quellcode

    1. image_speed=0;
    2. move_dir = 0 // 0 = rechts und 180 = links

    STEP EVENT:

    GML-Quellcode

    1. if keyboard_check(vk_right) or keyboard_check(ord("D")) and place_free(x+4,y)
    2. {
    3. x+=4
    4. move_dir=0
    5. sprite_index=spr_player
    6. }
    7. if keyboard_check(vk_left) or keyboard_check(ord("A")) and place_free(x-4,y)
    8. {
    9. x-=4
    10. move_dir=180
    11. sprite_index=spr_player_links
    12. }
    13. //////JUMP
    14. if keyboard_check(vk_space) and !place_free(x,y+1)
    15. {
    16. vspeed=-7
    17. }
    18. /////GRAVITY
    19. if place_free(x,y+1)
    20. {
    21. gravity_direction=270
    22. gravity=0.7
    23. }else
    24. {gravity=0}
    Alles anzeigen

    COLLISION EVENT

    GML-Quellcode

    1. move_contact_solid(move_dir,12)
    2. vspeed=0

    Husi012 hat mich nicht mehr in seiner Signatur, ich bin trotzdem noch fame.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Dufner ()

  • also danke erstmal für deine hilfe und antwort

    aber es gibt ein problem und zwar hab ich es mit deinem code probiert und wenn ich den benutze ist es immer noch so das an der linken mauer wenn der spieler ankommt wieder ein paar pixel nach rechts springt.
    und dazu noch wenn man mit dem player springt wird kurz vorm aufkommen des players der player um ein paaar pixel nach rechts geschoben.


    also so funktioniet es leider nicht aber danke..wahrscheinlich hab eh ich einen fehler gemacht.




    noch eine frage ich habe den gegner player so gemacht das er im step event diesen code hat

    GML-Quellcode

    1. if place_free(x,y+1)
    2. {x-=4}
    3. if place_free(x,y+1)
    4. {
    5. gravity_direction=270
    6. gravity=0.7
    7. }else
    8. {gravity=0}



    aber wie mache ich es das er nach rechts auch läuft``??
    wenn ich den selben code mit if_place_free benutze und nur x+=4 schreibe bewegt sich der player überhaupt nicht mehr...bitte um hilfe bei beiden dingen thx an alle
  • markus schrieb:

    aber hab noch immer das problem mit dem gegner wie ich mache das er auchnach rechts geht und wieder zurück


    Die Frage ist: Soll er Gegner nach rechts gehen wenn links eine collision war? Also zw hindernis und hindernis hin und herwandern?

    Oder soll der Gegner zufällig seine Richtung wechseln?
  • Das Problem ist wasl; wenn der Player hintunter fällt, fällt er ja nicht unbedingt auf den boden weil mit zB immer um 6 pixel nach unten fällt, wenn er nun von 25px runterfällt, dann fällt er irgendwann zwangsläufig in den Boden und nicht auf den boden, dann wird auch dein Wandcollision code ausgelöst weil sich neben dem player plötzlich etwas festes befindet. Der Player muss also wenn er eine bestimmte Tiefe erreicht hat um die Länge bis zum Boden fallen und nicht um den Wert den er bis jetzt gefallen ist.

    ancient-pixel.com
    youtube.com/user/SebastianMerkl <<< ich freu mich über einen Besuch ;)