Command Frage

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

  • ja wir kennen diesen Command :D... hast du dir schon irgendwelche gedanken gemacht wie das gehen könnte ?...

    aber gut so gemein will ich nicht sein, denn das ist nicht ganz so einfach...

    erst einmal zur theorie und die eigenschaften wie deine plattform sein soll also was wollen wir ? wir wollen eine plattform die durch die wir durchspringen können wenn wir von unten kommen soll aber nicht mehr durchgänglich sein wenn wir von oben kommen. Also erst einmal haben wir unsere Plattform dem fügen wir einem Sprite hinzu damit wir sehen können wo wir unser objekt im room editor hinzugefügt haben.

    nennen wir dieses objekt in diesem kontext obj_wall und das sprite nennen wir spr_wall.

    so wir erstellen ein objekt nennen es obj_wall und fügen ihm den sprite spr_wall hinzu.

    Dann fügen wir ein Event hinzu als erstes mal ein Create Event
    in dieses Event schreiben wir rein

    GML-Quellcode

    1. sprite_index = -1 //da wir unser sprite gelöscht haben, haben wir keine kollisionsmaske mehr


    Dann fügen wir ein Draw Event hinzu

    GML-Quellcode

    1. draw_sprite(spr_wall,0,x,y);//Somit fügen wir dem Objekt optisch wieder einen Sprite hinzu


    Du kannst es nun testen und im Normalfall kannst du jetzt durch die Plattform springen, also haben wir schonmal die Basis erstellt

    So jetzt kommen wir mal zum härteren Part wir fügen ein Step Event hinzu

    GML-Quellcode

    1. if (instance_exists(obj_player){ //Erst einmal stellen wir sicher das unser Player überhaupt existiert damit wir keinen Fehler erhalten
    2. if (obj_player.y + (obj_player.sprite_height/2) > y){ mask_index = -1; //Also wir sagen wenn der Player unter der Plattform ist dann gibt es keine //Kollisionsmaske
    3. }else{
    4. mask_index = spr_wall; // Jetzt sagen wir jedesmal wenn wir drüber stehen aktiviert sich die Kollisionsmaske
    5. }
    6. }



    Wir stehen zusammen und wir fallen zusammen

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

  • Hallo Wandi, Willkommen im Forum :)

    Dafür gibt es zwar keinen Befehl, aber du kannst dies so verwirklichen, indem du checkst, ob du über dem Block stehst und so die Kollisionsmaske an oder ausschalten:
    Step der Platform

    GML-Quellcode

    1. if (obj_player.y - obj_player.sprite_yoffset + obj_player.sprite_height < y - sprite_yoffset) //Wenn Spieler über mir ist
    2. mask_index = sprite_index; //setze die Kollisionsmaske auf das eigene Sprite
    3. else
    4. mask_index = -1; //setze keine Maske


    Vielleicht verwirrt dich dieser Teil hier:

    GML-Quellcode

    1. if (obj_player.y - obj_player.sprite_yoffset + obj_player.sprite_height < y - sprite_yoffset)


    obj_player.y ist die y Koordinate des Spielers (bzw. der Instanz von obj_player)
    obj_player.sprite_yoffset ist das origin vom Spieler, dass du im Spriteeditor setzt

    und
    obj_player.sprite_height ist die Höhe des Sprites vom Spieler.

    Was wir auf jeden Fall schauen wollen ist, ob auch der unterste Pixel über der Platform ist.
    Falls das Origin jetzt nicht auf 0,0 steht, geht das Sprite über die Koodinate von der Instanz. Um die Koordinate vom Sprite ganz oben zu bekommen muss man dann einfach nur die y-Koordinate des Origins (sprite_yoffset) mit der y Koordinate der Instanz subtrahieren. Jetzt haben wir aber nur den obersten Punkt. Um den untersten zu bekommen, muss dann aber nur noch die Höhe (sprite_height) dazu addieren.
    Wenn dies Höher ist, als die eigene y Koordinate minus dem eigenen sprite_yoffset (um den obersten Punkt von der Platform zu bekommen), dann wird der CodeBlock/der Befehl ausgeführt.


    Wenn du Lust hast, kannst du dir gerne meine Tutorials, die in meiner Signatur verlinkt sind anschauen und vielleicht auch bei Zeit mit mir und anderen auf Discord chatten (Link auch in der Signatur).

    Gruß Husi ;)
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
  • Hier mein Beitrag:

    Kollision-Script:

    Quellcode

    1. x_offset = 0;
    2. y_offset = 1;
    3. var xx = player.x+x_offset;
    4. var yy = player.y+y_offset;
    5. var solid_collision = (place_meeting(xx, yy, objSolid));
    6. if (solid_collision)
    7. {
    8. return true;
    9. }
    10. else
    11. {
    12. if (v_speed >= 0)
    13. {
    14. var semi_collision = (place_meeting(xx, yy, objSemiSolid));
    15. if (semi_collision)
    16. {
    17. var above_collision = (place_meeting(xx, yy-1, objSemiSolid));
    18. if (!above_collision)
    19. {
    20. return true;
    21. }
    22. }
    23. }
    24. }
    25. return false;
    Alles anzeigen
  • Vielen dank euch beiden für eure Antwort :3 Ich bin noch etwas jünger und neu in GameMaker und brauche deshalb noch etwas Hilfe und finde diesen Forum mega gut für solche Fragen ich schätze ihr werdet mich in Zukunft hier weiter sehen (Das ist nichts gutes xD)

    Liebe Grüsse Wandi vom Mashed Games Team :3