Isometric Motion_Planing

  • GM 8

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

  • Isometric Motion_Planing

    Hey Leute,

    ich bin zurzeit dabei ein Isometrisches Aufbauspiel zu erstellen.
    Leider gibt es hier im Forum zu Isometrischen Spielen kaum Themen, bzw ich hab kaum hilfreiche gefunden.
    Nun aber zu meinem Problem:

    Ich habe eine Figur mit 8 Bewegungsanimationen = Richtungen. Was ich nun gerne möchte ist ein Motion Planning zu Programmieren was es mir ermöglicht durch klicken an eine Stelle die Figur dort hinlaufen zu lassen, allerdings möchte ich das sie nur die Winkel läuft deren Sprites ich auch besitze sprich:
    0° / 45° / 90° /135° /180° / 225° / 270° / 315°

    Kennt jemand eine Möglichkeit wie man das am besten Programmiert, bzw kann mir ein Tutorial empfehlen?

    Ich möchte halt gerne durch die Richtungsabfrage die jeweiligen Sprites drawen, ich habs schon mit nehm Motion Planing Code probiert allerdings führte das zu keinem guten Ergebnis.


    Ich hoffe ihr könnt mir en Tipp geben

    Grüßle Blayde
  • Schau dir das mal an:

    Habe ich im Desktop liegen, "wollte" auch mit Isometrischem Spielen arbeiten, dann dachte ich aber, Nein. Bitte ließ dir das Game Info, dort sind alle Informationen zu diesem Spiel (und ob diese benutzt werden können mit/ohne Credit)
    Dateien
  • ich weis nicht wie gut das funktioniert aber wenn du zu deinem spieler obj. ein anderes obj. springen lässt das man nicht sieht und sich immer in die richtung der maus richtet .
    beim klicken mache es so:
    :event_mouse:

    Quellcode

    1. global.x = mouse_x
    2. global.y = mouse_y

    für spieler :
    :action_steppotential: //habe den code vergessen von dem

    Quellcode

    1. als koordinate
    2. global.x,global.y

    und dann kannst du immer abfragen in welcher richtung das spring obj. ist
    und dann weist du ja welche richtung das ist
    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
  • @DefZombie

    danke dir für das Beispiel, habs mir angeschaut.

    Leider bringt mich das nicht wirklich weiter.
    Ich versuch nochmal mein Problem zu erläutern ^^

    Ich möchte sozusagen eine Point and Click bewegung realisieren.
    Sprich mein Charakter steht irgendwo ich wähle ihn an und drücke irgendwo anders auf ein Feld. Nun soll er sich möglichst direkt dort hinbewegen....
    Das alles hab ich auch schon hinbekommen.

    Allerdings nimmt er immer den kürzesten Weg, sprich wenn kein Hinderniss vorhanden ist, die gerade Strecke, allerdings möchte ich das nicht, weil mit der Maus den Richtigen winkel von den 8 Richtungen zu treffen is eher unwarscheinlich, ich möchte also eine Pathfindung die nur die Richtungen berücksichtigt die mein Charakter gehen darf.

    Und da hab ich grad en Knoten im Hirn XD

    Hier noch ein Bild zur Verdeutlichung

    Rot: Pfad den er nicht gehen soll, weil dann die Bewegung mit den Sprites nicht übereinstimmt
    Grün: Pfad den ich gerne hätte
    hell Grün: Diagonal würde auch gehen --> kürzere alternative
    Bilder
    • erklärung.GIF

      59,51 kB, 668×504, 221 mal angesehen
  • Ich hab mir an sowas auch mal die Zähne ausgebissen. du brauchst mp_potential richtung maus oder wegpunktobject und dann musst du abfragen welchen Wert Direction hat.

    GML-Quellcode

    1. if direction > 0
    2. {
    3. if direction > 45
    4. {
    5. image_number = 000
    6. }
    7. }
    8. etc etc



    EDIT:

    UND du brauhst:

    GML-Quellcode

    1. mp_potential_settings(45,45,3,1)
    2. mp_potential_step(des.x,des.y,6,0

    Das ist erlaubte Rotation, wieviel rotation bis wieder ein freies Feld gefunden wird, art der bewegung und nichtsichselbst abchecken. Danch dann MP_step

    ancient-pixel.com
    youtube.com/user/SebastianMerkl <<< ich freu mich über einen Besuch ;)
  • Da kannst du ganz einfach:

    GML-Quellcode

    1. speed=4//Ode wie schnaell auch immer
    2. direction=floor(point_direction(x,y,ziel.x,ziel.y)/90)*90+45 // Richtung erechnen

    Müsste gehen...
    Kopiere dies in deine Signatur, um es in deiner Signatur zu haben.
    Achtung: Dieser Beitrag läuft ende des Monats ab, bitte lese ihn noch vor dem Monatswechsel...
    Nach langer zeit wieder im Forum aktiv :D
  • Das geht mit der MP_grid funktion ganz gut.

    Ich nutze einfach ein normales 2d Grid mit einem Zellen Wert von 1x1. Dort drin sind die obejekte wie in meinem Beispiel schiffe.
    Aber gezeichent werden sie in iso.
    Dazu must du die x und y koordiante in iso umwandel.
    Ich wollte schon seit 2 Jahren dazu ein Tutorial schreiben wie man das macht.
    Ich hatte aber nie lust dazu.

    Hier ein Beispiel wie das bei mir aussieht.


    Das schiff fährt die Iso Bewegungen ab, ist aber in wirklichkeit oben in der Ecke des Raumes und fährt dort herum.
    Da man ja mp_grid nicht transformieren kann must du halt den Sprite wo anders zeichen.
    Funst zu 110% genau.

    Iso Umrechnungformel for ein Isoset von 64*32 pixeln

    GML-Quellcode

    1. x_start=((y+1)*32)
    2. y_start=(room_height/2)+((y+1)*16)
    3. xx1=round(x_start+(x*32))
    4. yy1=round(y_start-(x*16))
    Meine Signatur hat kein Visum für das GM Forum erhalten.