Einzelnes Objekt soll die Farbe ändern

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

  • Einzelnes Objekt soll die Farbe ändern

    Der Spieler berührt ein Objekt und dieses Objekt soll sein Sprite ändern.
    Aber nur dieses Objekt welches er berührt, also ich hab in meinem raum ein Boden welches aus 100x100 px Blöcken besteht. Und wenn mein Spieler darüber geht sollen die Blöcke nach und nach den Sprite ändern.
    Welcher Code ändert nur von dem Block den Sprite welches auch der Spieler berührt, weil bei mir wenn der Spieler EINEN Block berührt, ändern ALLE Blöcke im Raum den Sprite.
    Kann mir da jemand helfen?

    MFG. Recoonz
  • ich denke da gibt es 2 Möglichkeiten, im Kollisions_Event vom Spieler mit dem Block kommt entweder das:

    GML-Quellcode

    1. other.sprite_index = NEUER_SPRITE;


    oder

    GML-Quellcode

    1. with(other)
    2. {
    3. sprite_index = NEUER_SPRITE;
    4. }


    Wobei ich mir nicht sicher bin, ob das 2. funktioniert.

    -Nils
  • Danke für deine schnelle Antwort,

    ich habe es so gemacht wie du gesagt hast,
    die Farbe ändert sich jetzt nur bei den Blöcken welche der Spieler berührt, ABER nur wenn er auf sie drauf springt.
    Wenn ich ganz normal über die Blöcke laufe ändert sich nichts, nur wenn ich springe und auf dem Block lande dann ändert es sich.
    Hast du eine Idee ?

    Mfg. Recoonz
  • Ich gehe mal davon aus, dass es ein Jump n' Run ist.

    Dann kannst du einfach dies ins Step Event von dem Block tun:

    GML-Quellcode

    1. if((point_in_rectangle(SPIELER.x,SPIELER.y,x-sprite_get_xoffset(sprite_index),y-sprite_get_yoffset(sprite_index),x-sprite_get_xoffset(sprite_index)+sprite_get_width(sprite_index),y-sprite_get_yoffset(sprite_index)-sprite_get_height(sprite_index)) || place_meeting(x,y,SPIELER)) && sprite_index != WUNSCHSPRITE)
    2. {
    3. sprite_index = WUNSCHSPRITE;
    4. }


    Ich weiß nicht ob du da sofort durch blickst und ja ich weiß, das point_in_rectangle nicht die schnellste Funktion ist, aber es sollte für deine Zwecke genügen.

    SPIELER in dein Spielerobjekt umwandeln
    WUNSCHSPRITE in dein gewünschten Sprite umwandeln.

    Ich habe es jetzt nicht getestet, hoffe es funktioniert.

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

  • Ich hätte einfach im Create Event eine Lokale variable erstellt:

    GML-Quellcode

    1. laufen=0


    Und im StepEvent geprüft, ob der Spieler sich über dem Block befindet hat:

    GML-Quellcode

    1. if place_meeting(x,y-100,SPIELEROBJEKT)//100x100 sind ja deine Blöcke, hattest du gesagt
    2. {
    3. laufen=1
    4. }


    Und das Draw_Event wechselt dann den Sprite:

    GML-Quellcode

    1. if laufen=0
    2. {
    3. draw_sprite(NICHTBELAUFENERBLOCK,0,x,y)
    4. }
    5. else
    6. if laufen=1
    7. {
    8. draw_sprite(BELAUFENERBLOCK,0,x,y)
    9. }



    Wenn der Sprite sich wieder ändern soll, wenn der Spieler von dem Block runtergeht, musst du halt noch irgendwo einbauen, dass laufen wieder zurückgesetzt wird.
    Im Internet weiß niemand, dass du ein Truthahn bist.