Instance Count in Grid Zelle checken

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

  • Instance Count in Grid Zelle checken

    Hey ^^

    Ich würde gerne die instance_count eines Objektes (Gegners) für jede Zelle in einem Grid überprüfen, da ich nur eine maximale Anzahl an Gegnern pro Grid haben möchte. Weiß jemand wie ich das am besten angehen kann?
    Es gibt 10 Arten von Menschen: Diejenigen, die Binärcode verstehen und die, die es nicht tun ^^
  • Ja du kannst durch alle Instances durchiterieren und dann mit point_in_rectangle(instanceX, instanceY, gridCellX, gridCellY, gridCellX+gridCellWidth, gridCellY+gridCellHeight)

    ancient-pixel.com
    youtube.com/user/SebastianMerkl <<< ich freu mich über einen Besuch ;)
  • Okay also hast du eine Idee wie ich am besten - sagen wir mal - nie mehr als 6 Gegner pro Zelle habe? Sollte diese Abfrage von den Gegnern aus gemacht werden? Oder von einem anderen Objekt wie dem Grid Objekt?

    EDIT:

    Was ich noch erwähnen sollte, die Grid Zellen haben eine Größe von 10*32 x 10*32. Das heißt, in jeder dieser Grid Zellen sind genau 10 x 10 Tiles, also Wand oder Boden. Nun sollen also in diesem großen Grid maximal zB 6 Gegner sein. Weiß jemand wie ich das am Besten angehen kann? :D
    Es gibt 10 Arten von Menschen: Diejenigen, die Binärcode verstehen und die, die es nicht tun ^^

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

  • Das klingt doch nach einer tollen Aufgabe :D
    Ich schätz mal du willst, das die Gegner die dann zuviel in der Zelle sind einfach zerstört werden.
    Dann würd ich jedesmal wenn der gegner eine neue Zelle betritt ihn einmal checken lassen ob dort schon 6 in der Zelle sind.

    Create-Event für Variablen:

    GML-Quellcode

    1. xgrid_prev = floor(x/320);
    2. ygrid_prev = floor(y/320);

    Step-Event oder was auch immer mit dem Movement:

    GML-Quellcode

    1. var xgrid;
    2. var ygrid;
    3. xgrid = floor(x/320);
    4. ygrid = floor(y/320);
    5. if (xgrid != xgrid_prev || xgrid != xgrid_prev){ //x oder y ist anders, okay ich bin in einer anderen Zelle
    6. xgrid_prev = xgrid;
    7. ygrid_prev = ygrid;
    8. var gridcount;
    9. gridcount = 0;
    10. with(obj_enemy){ //mit jedem Gegner prüfen ob er in der eigenen Zelle ist
    11. if (floor(x/320) == xgrid && floor(y/320) == ygrid)
    12. gridcount += 1;
    13. }
    14. if (gridcount > 6) //Okay das sind zu viele hier
    15. instance_destroy();
    16. }
    Alles anzeigen

    Das ist jetzt recht spontan entstanden, habs daher jetzt nicht getestet, aber das dürfte funktonieren :D
    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