[Gelöst von Tice] Physics AI Problem (Game Maker: Studio)

  • GM 8

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

  • [Gelöst von Tice] Physics AI Problem (Game Maker: Studio)

    Edit: [Gelöst von Tice dem Allmächtigen]

    Hey, ich hab ein Poblem mit den GM Studio Physics.

    Meine Physics World:

    GML-Quellcode

    1. physics_world_gravity(0, 15);


    Code von der Gegner AI (ein Zeppelin):

    GML-Quellcode

    1. var spd, dir;
    2. if (mp_grid_path(obj_control.map, path, x, y, obj_player.x, obj_player.y, 1)) && (distance_to_object(obj_player)>40) {
    3. spd = 1;
    4. dir = point_direction(x, y, path_get_point_x(path, 1), path_get_point_y(path, 1));
    5. phy_speed_x = lengthdir_x(spd, dir);
    6. phy_speed_y = lengthdir_y(spd, dir);
    7. }

    Ohne der physics_world_gravity würde das ganze funktionieren aber der Gegner fällt deshalb immer auf den Boden. Er soll jedoch schweben und dem Player folgen, also bräuchte er irgendeinen Ausgleich zu phy_speed_y (welches durch die Gravitation erhöht wird)

    MfG

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

  • Also ich weiß nicht wie du es gelöst hast (wäre gut wenn du das hier hin schreibst, damit andere Nutzer mit ähnlichen Problemen daraus lernen können) aber eine Lösung wäre den code

    GML-Quellcode

    1. physics_world_gravity(0, 15);

    nicht zu verwenden. Statdessen kann man in jeden Object das Gravitation hat, jeden Step eine Force nach unten einbauen, die der Gravitation entspricht. Gleiches Resultat, aber man muss nicht doppelt rechnen, um erst eine Force aufzuwenden um sie dann wieder zu nullifizieren, wie du es Vorgeschlagen hast.
  • Hellfish schrieb:

    Also ich weiß nicht wie du es gelöst hast (wäre gut wenn du das hier hin schreibst, damit andere Nutzer mit ähnlichen Problemen daraus lernen können) aber eine Lösung wäre den code

    GML-Quellcode

    1. physics_world_gravity(0, 15);

    nicht zu verwenden. Statdessen kann man in jeden Object das Gravitation hat, jeden Step eine Force nach unten einbauen, die der Gravitation entspricht. Gleiches Resultat, aber man muss nicht doppelt rechnen, um erst eine Force aufzuwenden um sie dann wieder zu nullifizieren, wie du es Vorgeschlagen hast.

    Das hab ich mir auch schon überlegt, würde auch gehen aber ich wollte dann doch lieber die Gravitation behalten.
    Die Lösung war einfach keinen Path zu benutzen:

    GML-Quellcode

    1. dir = point_direction(x, y, obj_player.x, obj_player.y);