Instance_nearest - mehrere Objekt, Performance

  • GM 8

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

  • Instance_nearest - mehrere Objekt, Performance

    Ich hab jetzt ein kleines Problem.
    Bin gerade dabei ein kleines Spiel zu programmeiren: Tomato

    Dort ist es nur 1 Gegner und somit kann ich für meine Türme einfach:

    GML-Quellcode

    1. xx = instance_nearest(x,y,obj_g_land).x
    2. yy = instance_nearest(x,y,obj_g_land).y
    3. direction = point_direction(x,y,xx,yy)

    Bei mehreren Gegner habe dann einfach ein neues Objekt erstellt, welches die ganzen "Länder" als Child hat.
    Und muss dann natürlich nur noch das eine Objekt abfragen.


    GML-Quellcode

    1. xx = instance_nearest(x,y,obj_land_parent).x
    2. yy = instance_nearest(x,y,obj_land_parent).y


    Das Problem ist jetzt, dass die Gegner, auch das obj_land_parent nutzen und somit ihr eigenes Land als "Ziel" setzen.
    Ich habe nach eine Funktion gesucht, um irgendwie bei der Überprüfung, die Parents der Objekte, jeweils zu ändern. Sowas wie instance_set_parent().
    Nach ein paar Überlegungen dachte ich, ich löse dieses Problem, indem ich einfach das eigene Land vor der Überprüfung deaktiviere und nach der Überprüfung wieder aktiviere.

    GML-Quellcode

    1. instance_deactivate_object(obj_g_land)
    2. xx = instance_nearest(x,y,obj_land_parent).x
    3. yy = instance_nearest(x,y,obj_land_parent).y
    4. instance_activate_object(obj_g_land)


    Als ich mit allem fertig war, merke ich, dass ich besonders wenn die ganze Karte voll ist, das man nur noch bei 15 FPS spielt.

    Ich habe also ein paar Fragen.
    1. Kommen diese langsame FPS-Zahl wirklich von dem deaktivieren und aktivieren?
    2. Gibt es eine Funktion, womit man die parents der Objekte ändern kann?
    3. Könnte die langsame FPS-Zahl auch woanders herkommen?
    4. Gibt es auch einen anderen Weg, das Problem zu lösen?

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