Instance nearest *gelöst* Danke

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

  • Instance nearest *gelöst* Danke

    Also folgendes:
    Ich bastle eine AI, die Gegener abschiesen soll, und das hier ist die AI, die feststellen soll welche "Instance" am nächsten ist.

    Die funktion: instance_nearest(x,y,obj) gibt es ja.
    Die Funktions instance_nearest(x,y,obj1,obj2,obj3,obj4) etc..... gibt es ja leider nicht
    Ich möchte nämlich die naheste "Insatance" aus vorgegebenen Objekten, und nicht nur ein einziges.


    So bevor ihr jetzt meinen nur halb funktionierenden Monsterskript lest, eine Frage:

    Gibt es eine Möglichkeit eine solche Funktion zu basteln ?

    Hier mein Lösungsvorschlag:

    GML-Quellcode

    1. //enemy
    2. instance_exists(enemy)
    3. {
    4. nid1 = instance_nearest(x,y,enemy)
    5. global.distanceenemy = point_distance(Aiplayer.x,Aiplayer.y,enemy.x,enemy.y)
    6. }
    7. //enemy2
    8. instance_exists(enemy2)
    9. {
    10. nid2 = instance_nearest(x,y,enemy2)
    11. global.distanceenemy2 = point_distance(Aiplayer.x,Aiplayer.y,enemy2.x,enemy2.y)
    12. }
    13. //enemy3
    14. instance_exists(enemy3)
    15. {
    16. nid3 = instance_nearest(x,y,enemy3)
    17. global.distanceenemy2 = point_distance(Aiplayer.x,Aiplayer.y,enemy3.x,enemy3.y)
    18. }
    19. if global.distanceenemy < global.distanceenemy2 {if global.distanceenemy < global.distanceenemy3
    20. {nid = nid1}}
    21. else
    22. if global.distanceenemy2 < global.distanceenemy { if global.distanceenemy2 < global.distanceenemy3
    23. {nid = nid2}}
    24. else
    25. if global.distanceenemy3 < global.distanceenemy2 { if global.distanceenemy3 < global.distanceenemy
    26. {nid = nid3}}
    27. nid.alarm[0] = 1
    Alles anzeigen


    Das Problem ist, dass er die enemies so priorisiert. Ist ein enemy, ein enemy2, und ein enemy3 da, so schiesst er imemr zuerst auf enemy, egal wie weit weg die anderen sind.
    Zudem wird der Skript riesengroß, je mehr Gegner ich einbaue....

    Also jeman eine Idee wie man
    instance_nearest(x,y,obj1,obj2,obj3,obj4) etc

    Simulieren kann ?
    Projekte:

    Interesse ? PM mir ;)

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

  • Bin mir nicht sicher ob ich es ganz verstanden habe, aber reicht es nicht, allen deinen Gegnerobjekten das selbe parent-Objekt zu geben und dann nur instance_nearest(x,y,obj_enemy_parent) abzufragen?

    PS.: Die Zeilen instance_exists(enemy) etc. machen rein gar nichts. Ich denke, da fehlt ein "if". Aber wie gesagt, dein ganzes "Monsterscript" ist wahrscheinlich überflüssig, wenn du einfach mit parents arbeitest...
    Einige meiner Spiele:
  • Oh shit an sowas wie parents habe ich ja gar nicht gedacht.... oh nein !!

    Vielen dank !

    Aus dem großen Script wurde nun:

    GML-Quellcode

    1. nid = instance_nearest(x,y,enemyparent)
    2. nid.alarm[0] = 1



    Oh man danke =)
    Projekte:

    Interesse ? PM mir ;)