Drehrichtung bei Zielen aus Fahrzeug|Anpassung auf bestimmten Winkel

  • GM 8

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

  • Drehrichtung bei Zielen aus Fahrzeug|Anpassung auf bestimmten Winkel

    HalliHallo,

    Ich komm gleich zur Frage: Wie kann ich checken, ob, wenn ich nun von direction abhängig eine direction machen will
    in der nun zum Beispiel 50° "übersprungen" werden, die Drehung des Charakters eher links oder rechts herum ist?
    Einfache Skizze:


    Als Beispiel nehme ich jetzt einmal wieder GTA. Wenn dort aus dem Auto zielt, ändert sich
    die Dreh-Animation des Players, wenn man über 180° von der Richtung des Autos kommt.
    Ich hoffe, jemand versteht was ich meine und kann mir helfen.

    EDIT: Einfacher gefragt: Wie kann ich etwas dazu bringen sich von direction aus in die richtung aim_direction zu drehen, und zwar so, dass
    es entscheidet ob es sich links herum oder rechts herum drehen soll(je nachdem wie es kürzer ist)?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Mr. Diesel ()

  • Versteh ich das richtig:
    Du willst das du ein Wagen fahren kannst in Richtung direction (WASD?) und mit der Maus ziehlst du mit aimdirection aus dem Auto heraus?(mit der Maus wird aimdirection festgelegt?) - aber ! Der hintere Bereich wird übersprungen, bedeutet sozusagen du kannst z.b nicht nach hinten schießen, sondenr nur
    rechts,links und nach vorne, wenn du jetzt mit der Maus rumgehst soll dieser tote Winkel übersprungen werden und zwar in die Richtung, welche am nächsten an der aim_direction(also der Maus) dran ist?
    Oder hab ich hier was falsch interpretiert :D (Tut mir Leid, aber bissle confusing, kann auch daran liegen das Ferien sind und mein Gehirn schon in Bier schwimmt)

    Mfg
    Wie viele von euch wissen, dass Rot und Grün Gelb ergibt?
  • Das ist absolut korrekt.

    Btw.: Also WASD ist nicht gleich die Richtung, W ist beschleunigen, A bewirkt eine Drehung
    nach Links von der aktuellen direction aus(Abhängig davon, ob es eine Kollision erfolgen würde
    und wie schnell das Fahrzeug fährt/fliegt),D das gleiche nur nach Rechts, und S... ja, eben die Bremse.
    Das ganze spielt sich dann in 3D ab mit einfacher Physik ab.
    Hier ist aber nur die 2D-Ebene für mich entscheidend. Wie in einem TDS...

    Zurück zum Thema:
    Also das wäre jetzt noch einer letzten der Bausteine, die mir fehlen.
    Ich werd' den Code dann auch für die K.I., etc. nutzen...
    Wäre nett, wenn du wüsstest, wie ich das mit Code realisieren kann. :)

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Mr. Diesel ()

  • Kein Problemo :)

    Im Stepevent:

    Quellcode

    1. a=point_direction(x,y,mouse_x,mouse_y)
    2. if a>=230 || a<=130 { image_angle=a} else { if a>=170{a=230 image_angle=a} if a<=170{a=130image_angle=a} }

    Das ganze habe ich jetzt auf eine Person abgespielt, wenn du jedoch image_angle weglässt und durch z.b aim_angle ersetzt, dazu noch

    durch die Schusstaste die Kugle in aim_angle-direction abschiessen lässt, so sollte alles gehen

    Ist jetzt noch sehr unsaubar, da ich es jetzt eben hier ohne zu testen hingekritzelt habe, müsste aber stimmen und funktionieren ;)
    fehlte dir "point_direction(x,y,mouse_x,mouse_y)"?

    mfg ;) hoffe konnte helfen :D wieso hat kein anderes geantwortet? also wirklich, muss der arme jung vom prorgammiern abgebracht werden
    Wie viele von euch wissen, dass Rot und Grün Gelb ergibt?

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

  • Kürzer und einfacher ginge es so:

    GML-Quellcode

    1. aim_direction = max( min( aim_direction mod 360, /*größerer wert z.B.*/ 300 ), /*niedrigerer Wert z.B.*/ 240 );


    - Tobi97
  • Danke. Ich werde gleich beide Codes ausprobieren.
    Aber, um beide zu verstehen, möchte ich noch etwas wissen:
    was bedeutet || ? Und was mod ?

    Zu beiden Codes: Ist denn der Wert 0 bei einer Richtungangabe nicht immer nach rechts,
    also aufsteigende Werte auf der X-Achse? Dann würden meines Wissens nach
    beide Codes nicht stimmen... (:rage: )
    Btw.: point_direction(x,y,mouse_x,mouse_y) habe ich nicht, ich habe einfach eine direction wie in einem fps.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Mr. Diesel ()

  • Hättest du einmal die SuFu benutzt, hättest du folgenden Skript gefunden:

    GML-Quellcode

    1. //scr_drehen
    2. var dir1, dir2, d;
    3. d = argument2;
    4. dir1 = point_direction(x,y,argument0,argument1);
    5. dir2 = image_angle-dir1;
    6. if (dir2 > 180)
    7. dir2 -= 360;
    8. else if (dir2 < -180)
    9. dir2 += 360;
    10. if (dir2 > d)
    11. dir2 = d;
    12. else if (dir2 < -d)
    13. dir2 = -d;
    14. image_angle = (image_angle-dir2+360) mod 360;
    Alles anzeigen

    Dann einfach ins Step Event:

    GML-Quellcode

    1. scr_drehen(mouse_x,mouse_y,8)
    Meine Spiele:
    - Mission A
    - Mission B
    - The Virus 1, 2, 3
    - The Virus 4: The Excision
    - Blur melts Snow
    - Blur melts Snow: 2nd Version
    - Cave Jumper

    Hauptrojekt: Party Mania(Arbeitstitel) - große Multiplayer-Minispielsammlung
    In Planung: Planet Jumper(Nachfolger von Cave Jumper)
  • Aber, um beide zu verstehen, möchte ich noch etwas wissen:
    was bedeutet || ? Und was mod ?
    || ist die Kurzform für oder(or):

    GML-Quellcode

    1. wert=true||false;

    Wenn einer der beide Werte wahr ist ist der Ausdruck auch wahr, sind beide Werte false ist der Ausruck auch false:

    Quellcode

    1. true=true||true;
    2. true=true||false;
    3. true=false||true;
    4. false=false||false;

    mod ist der Operator für Restrechnung: 2 mod 3=1 wenn x mod y==0 ist kann man x durch y ohne Kommastellen teilen. 4 mod 2=0
    wupto.net/ Nicht meine Seite!
    We love Koalas.

    GM-D-Spam-o-Meter: 32%
  • @henrik1235
    Danke, jetzt bin ich schlauer.^^
    Steht das auch in der Hilfe? Ich hab' jetzt nichts gefunden. 8|

    @sebastian733
    Danke...
    Ich hab' SuFu nicht nur einmal benutzt. Es ist wohl eher so, dass ich
    IMMER die SuFu als erstes benutze, dann Google und erst dann so einen Post mache.
    Manchmal benutzt man einfach die falschen Tags... :|
  • Mr. Diesel schrieb:

    Steht das auch in der Hilfe? Ich hab' jetzt nichts gefunden. 8|

    Unter dem Kapitel "Ausdrücke" findest du mod, sowie || ( und andere nützliche Dinge ).

    -Tobi97