Abstand zwischen 2 Objekten soll gleich bleiben

  • GM 8

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

  • Abstand zwischen 2 Objekten soll gleich bleiben

    Hallo,
    ich mache grad ein Spiel, wo eine art Feuer oder Nitro direkt hinter dem player objekt sein soll.
    Dazwischen sollten immer ungefähr 2 Pixel frei sein.(also wie beim Spiel snake) Nur wie krieg ich das hin?
    Ich hab mir auch schon eine Menge Snake examples angeguckt, aber die haben mir auch nicht geholfen...
    Achso was ich vergessen habe: ich kann nicht einfach jump to position nehmen, da sich das player-objekt dreht.
    LG Katze
    :action_drawsprite: :event_collision: :action_killposition: = :action_health:

    :action_drawsprite: + :action_drawsprite: + :action_drawlivesimage: = :action_drawsprite: :action_drawsprite: :action_drawsprite:

    :action_drawsprite: + :action_color: = :action_spritecolor:

    :action_drawsprite: + :action_wrap: = :action_exit:
  • Miau!
    das problem ist gut und leicht zu lösen und zwar mit der funktion lengthdir_x(abstand,richtung). Mit dieser funktion wird dir die x Kooridnate des Vektors mit den angegebenen Parametern ausgegeben. Das gleiche gibts natürlich auch für y (=lengthdir_y(abstand,richtung).
    Wenn du jetz ein verfolgerobjekt haben willst, gib einfach diesen code in das stepevent deines Verfolgers:

    GML-Quellcode

    1. //Player ist der name deines "player"objekts, musst du gegebenenfalls austauschen
    2. richtung= point_direction(player.x,player.y,player.xprevious,player.yprevious);
    3. abstand= 18;
    4. x=player.x+lengthdir_x(abstand,richtung);
    5. y=player.y+lengthdir_y(abstand,richtung);

    Um das ganze noch zu perfektionieren musst du aber noch die Bedingung beachten wenn sich der Player gar nicht bewegt. Das würde bedeuten, dass keine Richtung ausgemacht werden kann, also setzt du einfach vor das ganze noch eine If abfrage:

    GML-Quellcode

    1. if (player.x != player.xprevious && player.y != player.yprevious)
    2. {
    3. richtung= point_direction(player.x,player.y,player.xprevious,player.yprevious);
    4. abstand= 18;
    5. x=player.x+lengthdir_x(abstand,richtung);
    6. y=player.y+lengthdir_y(abstand,richtung);
    7. }

    Ich hoffe es ist halbwegs einleuchtend. Ich hab dir auch noch ein Example gebastelt, sodass dus dir anscheuen kannst, falls es bei dir nicht beim ersten mal klappt :)
    Wuff JOhannski
    Dateien
  • Dankeschön für die schnelle Antwort.
    Ich habe in deinem Example alle Objekte so umgenannt, wie sie in meinem Spiel heißen und dann ging es noch.
    Jetzt hab ich die codes in mein Spiel eingefügt und es geht nicht mehr ?( . Ich verstehe nicht warum...
    also ich uploade am besten mal das abgeänderte, funktionierende example und mein spiel hoch.

    Edit: hab gefunden, wo der Fehler ist. Wenn man die Steuerung so wie bei mir einstellt gehts nicht mehr. Hab aber trotzdem keinen Plan wie man das lösen könnte

    Edit2^^: Hab den Fehler gefunden. Hab jedoch schon wieder ein neues Problem.
    :action_drawsprite: :event_collision: :action_killposition: = :action_health:

    :action_drawsprite: + :action_drawsprite: + :action_drawlivesimage: = :action_drawsprite: :action_drawsprite: :action_drawsprite:

    :action_drawsprite: + :action_color: = :action_spritecolor:

    :action_drawsprite: + :action_wrap: = :action_exit:

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