Bots mit h- und vspeed Treppen laufen lassen (Platformer)

  • GM 8

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

  • Bots mit h- und vspeed Treppen laufen lassen (Platformer)

    Hallo miteinander. ;)

    Ich brauch' mal etwas Hilfe.
    Und zwar möchte ich die KI in meinem Spiel dazu bringen, Treppen und 'normale' Steigungen zu benutzen.

    Natürlich habe ich mich vor meinem Post erstmal umgesehen und fand im Topic
    "Place_meeting_problem auf einer Schrägen" auch eine Lösung.
    Nur funktioniert diese nicht bei meiner 'KI'.

    Das Spiel an sich ist ein Platformer.
    Bei den Treppen handelt es sich um 32x32 px Blöcke mit einer Stufenhöhe von 4 px.



    Die Bots bewegen sich über hspeed und vspeed fort - und das zufällig, sodass sie auch gern mal auf der Treppe anhalten oder umdrehen.

    Mein Problem ist nun, dass die Bots beim Umkehren stecken bleiben, beim Benutzen der Treppe ihre Geschwindigkeit (welche beim Gehen eigentlich nur bei '1' liegen sollte) verändern oder sich sogar gänzlich weigern die Treppe überhaupt zu benutzen.

    Nun frage ich euch ob ihr mir vielleicht helfen könnt, wie ich die Strichmännchen dazu bewege einzusehen, dass ich ihnen nicht extra einen Fahrstuhl baue. ^^'

    Ich danke für jede Antwort. :)

    - mfG. DarkViper

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von DarkViper () aus folgendem Grund: Präzisere Problemschilderung und Kürzen des Beitrags.

  • Da ist lösbar. Mach es einfach mit einer Kollsions abfrage. Ich habe auch mal eine zugsterugn und mit schienen gemacht, wobei der zu geprüft hat, welche schiene unter ihm liegt und dem entsprehcned hat er seine richtung im bezug auf die geschwindigkeit verändert.
    Lange rede Kurzer sind. Wenn der Bot eine Kollsion mit der treppe hat dann sezt du die DIrection , im falles des Beispiel bildes auf 135 und läst den Bot somit schräg nach oben laufen. Und natürlich den speed auf deine gewünschte geschwindigkeit.
    Am besten schaust du in dem Platform Example mal nach. Das ist dann nix anderes als das was passiert, wenn du an einer leiter vorbei kommst. Das basiert ja auch auf einer Kollisionsabfrage
    Meine Signatur hat kein Visum für das GM Forum erhalten.
  • Klar kann man das Problem lösen. Aber zeig mal den Code der Bots, dann kann man dir besser helfen.
    Da ich in GML noch etwas ungeschickt bin habe ich das mit den Bots zunächst mit D&D gelöst. :S
    Aber auch das kann ich ja posten.

    :event_step: (Step-Event der Bots.) - Es ist das einzige Event, das sich mit den Handlungen der Bots beschafft.

    :action_begin:
    :action_iffree: if relative position (0,1)is collision free for only solid objects.
    :action_gravity: set the gravity to 0.5 in direction 270
    :action_else:
    :action_gravity: set the gravity to 0 in direction 270
    :action_ifvariable: if vspeed larger than 3
    :action_begin:
    :action_variable: set vspeed to 12
    :action_ifvariable: if hspeed larger than 0
    :action_change: Change into object "Human_Fall_Right" // Ich weiß. <_< Löse ich später noch subtiler über Sprites.
    :action_else:
    :action_ifvariable: if hspeed smaller than 0
    :action_change: Change into object "Human_Fall_Left"
    :action_end:
    :action_end:
    :action_begin:
    :action_ifdice: Chance von 1 zu 300 // Damit jeder Bot jederzeit völlig frei nach links, rechts laufen kann oder stehen bleibt.
    :action_begin:
    :action_hspeed: Set hspeed to 1
    :action_end:
    :action_else:
    :action_ifdice: Chance von 1 zu 300
    :action_begin:
    :action_hspeed: Set hspeed to -1
    :action_end:
    :action_else:
    :action_ifdice: Chance von 1 zu 300
    :action_begin:
    :action_hspeed: Set hspeed to 0
    :action_end:
    :action_end:

    [...] Wenn der Bot eine Kollsion mit der treppe hat dann sezt du die DIrection , im falles des Beispiel bildes auf 135 und läst den Bot somit schräg nach oben laufen. Und natürlich den speed auf deine gewünschte geschwindigkeit.
    Am besten schaust du in dem Platform Example mal nach. Das ist dann nix anderes als das was passiert, wenn du an einer leiter vorbei kommst. Das basiert ja auch auf einer Kollisionsabfrage

    Meinst du das Example auf der Yoyo Games - Page?
    Spoiler anzeigen
    http://www.yoyogames.com/make/tutorials


    In dem Fall fehlt bei mir in allen 5 Dateien das Event mit der Leiter :pinch:

    Ich hab das mal so versucht aber ich glaube das war's nicht (zumindest tut sich nichts)

    :event_collision: Collision-Event vom Bot zur Treppe

    :action_begin:
    :action_gravity: Set gravity to 0 in direction 135
    :action_hspeed: Set hspeed to -1
    :action_end:


    Unabhängig davon danke ich euch beiden schonmal für die Antworten.

    - MfG. DarkViper
  • Soho.

    Ich hab's nochmal mit der Lösung aus "Place_meeting_problem auf einer Schrägen" versucht.
    Diesmal habe ich jedoch die 'Collision Mask' des Bot-Sprites so beeinflusst, dass sie lediglich ein gleichbleibendes Viereck ist.

    Das Resultat: Die Bots benutzen die Treppe mit... zumindest wesentlich seltener vorkommenden Festhäng-Fehlern. Dagegen, dass die Bots bei dieser Lösung auf der Treppe etwas beschleunigen konnte ich bisher noch nichts tun, doch für die Version 1.0 meines noch am Anfang stehenden Spiels muss das wohl erstmal reichen. ;)

    Danke nochmals an Trixt0r und x-sascha.

    - MfG. DarkViper