Wie können sich objekte immer zur richtung des Spielers drehen?

  • Wie können sich objekte immer zur richtung des Spielers drehen?

    Hallo, ich wolltemal fragen wie sich objektezur richtung des spielers drehen können... z.B.ich gehe mit dem spieler nach oben. das objekt dreht sich jetzt(bleit aber an seinem platz) zum spieler. ich habe ja vor solche eine art runden racketen-werfer zu machen, und dann müsste sich das objekt immer drehen zum spieler...
    Aktuelle Projekte:

    • PacTobs 1(comming soon...) :gmlove:
    • PacTobs 2
    • ??? Quiz
    • Panzer-Spiel
    • Mario IN:The War of the Mushroom Kingdom!!
    • Ein Koopa-Spiel
    • Platform Spiel.

  • Ich habe die Lite version,könntest du mir bitte erklärenwo ich jetzt in den satz von dir da unten jetzt was einfügen muss :D
    sorry aber ich kenn mich nicht damit aus ?( :)
    Aktuelle Projekte:

    • PacTobs 1(comming soon...) :gmlove:
    • PacTobs 2
    • ??? Quiz
    • Panzer-Spiel
    • Mario IN:The War of the Mushroom Kingdom!!
    • Ein Koopa-Spiel
    • Platform Spiel.

  • Wenn du die Lite Version hast, hilft dir sein "Satz" (eigentlich Code)
    nicht weiter, die Variable image_angle gibts leider nur in der Pro Version.
    (Zur Info: Die Variable hätte dem Game Maker gesagt, dass er den Sprite
    des Objektes immer auf image_angle grad halten soll).
    So bleibt dir nur übrig, mithilfe des Sprite Editors eine Drehsequenz deines
    Sprites zu erstellen, mit d vielen zwischenschritten und dann
    in das :event_step: Event
    Mithilfe von :action_variable: die variable "image_index" auf den Wert floor(<richtung zum spieler>/d)
    zu setzen. Je nachdem wieviele zwischenschritte du hast, dreht er sich dann mehr oder weniger
    flüssig in die Richtung, ich würde dir aber auch empfehlen, nicht zuviele Zwischenschritte einzubauen.
    Gruß, Spellmaker
    ___________________________________________________________
    Beware of wild pointers
    ______Hinweis für Allergiker: Kann Spuren von Ironie enthalten_____
  • kannst du mir das ausführlicher erklären :) ?
    also ich muss jetzt das objekt das sich drehen soll, einen step-event :event_step: geben, dann mit :action_variable: den namen des spielers eingeben?
    könntest du mir das mit dem zwischenschritte erklären? (sorry aber game maker ist mir völlig neu... ich kenn mich damit nicht so sehr aus..)
    Aktuelle Projekte:

    • PacTobs 1(comming soon...) :gmlove:
    • PacTobs 2
    • ??? Quiz
    • Panzer-Spiel
    • Mario IN:The War of the Mushroom Kingdom!!
    • Ein Koopa-Spiel
    • Platform Spiel.

  • Okay, nochmal langsamer:
    Da du keine Pro Version hast, musst du die gedrehten Versionen des Sprites schon vorher anlegen.
    Dazu machst du den Sprite, der sich drehen soll, mit dem Sprite Editor auf und drückst auf editieren.
    Danach auf Animation->Rotation Sequence->Counter Clockwise.
    Im aufpoppenden Dialog stellst du ein, wieviele Zwischenschritte du haben möchtest, ich plädiere da
    vorerstmal für 8.
    Der Game Maker erstellt dir jetzt die verschiedenen, gedrehten Spriteversionen.
    Jetzt gehst du in das Objekt, dass diesen Sprite haben soll.
    Dort legst du das Create Event an und fügst den Befehl
    mit den Werten:
    sprite: dein sprite hier auswählen
    subimage: 0 wählen
    speed: 0 wählen
    ein.
    Dadurch erhält dein Objekt den initialen Sprite und wird auch daran gehindert, einfach so durch alle
    Richtungen durchzuschalten.
    Als nächstes soll sich dein Objekt ja immer zu einem Punkt drehen, ich wähle hier für die Demonstration
    einfach mal als Punkt den Mauszeiger aus.
    Das machen wir am Besten im Step Event, füge das also auch hinzu.
    Dort setzt du mithilfe von das unterbild des sprites, welches gezeichnet werden soll.
    Hier trägst du folgendes ein:
    variable: image_index (in diesem Container speichert der GM, welches unterbild gezeichnet werden soll)
    value: floor(point_direction(x,y,mouse_x,mouse_y)/(360/8) )

    Das braucht jetzt wahrscheinlich ein bisschen mehr erklärung:
    floor() ist eine funktion, sie nimmt den Wert, den du ihr zwischen den Klammern übergibst und rundet
    ihn ab auf den nächsten ganzzaligen wert; aus 5.423 wird also 5.
    point_direction() ist ebenfalls eine Funktion, sie übernimmt 4 Werte, die ersten beiden geben den Startpunkt
    und die letzten beiden den Endpunkt an. Sie gibt dir den Winkel zurück, den eine Linie vom Startpunkt zum Endpunkt
    im Verhältnis zur waagerechten hat.
    Das /(360/8) machen wir deswegen, weil wir nur 8 subimages haben, feiner können wir nicht drehen, also müssen
    wir die 360 grad eines vollen Kreises auf 8 teile aufteilen.
    mouse_x,mouse_y sind die Koordinaten des Mauszeigers.
    Im Anhang nochmal ein Beispiel dafür,
    ich hoffe es ist jetzt klarer.
    Gruß, Spellmaker
    Dateien
    • drehung.zip

      (10,93 kB, 155 mal heruntergeladen, zuletzt: )
    ___________________________________________________________
    Beware of wild pointers
    ______Hinweis für Allergiker: Kann Spuren von Ironie enthalten_____
  • danke, habs hinbekommen :D

    ich habs nur mit 360/64 gemaht :D hat etwas gedauert aber es klappt(und sieht echt aus) ;)
    danke :thumbsup:
    Aktuelle Projekte:

    • PacTobs 1(comming soon...) :gmlove:
    • PacTobs 2
    • ??? Quiz
    • Panzer-Spiel
    • Mario IN:The War of the Mushroom Kingdom!!
    • Ein Koopa-Spiel
    • Platform Spiel.

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