Collision_circle mit mehreren Instancen

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

  • Collision_circle mit mehreren Instancen

    Ich möchte herausfinden wie man abklären kann, wenn mehrere gleiche Instancen im Collisions_circle sind.


    Im Beispiel hier habe ich die drei schwarzen Gegner. Jeder von Ihnen hat einen Collisions_circle (schwarzer Kreis). Der Gegner in der Mitte (ID 100008) berührt mit seiner Collisions_circle beide seiner Kollegen. Wie kann ich das checken?

    EDIT: Eine kleine Beschreibungs-Ergänzung: Es geht nicht um die collisions_circle von den 2 Gegner, sonder um deren "sprite_mask" - das ein kleinerer durchsichtiger Kreis um die Füssen ist, und sich in der Collisions_circle von dem Gegner in der Mitte befinden und erkennt werden soll.

    Quellcode

    1. if (collision_circle(id_enemy.x, id_enemy.y, 50, enemy, false, false) > 2) {
    2. }

    Mit diesem Code gehts nicht :|
    huhu

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

  • zb mit point_in_circle kannst du überprüfen ob sich etwas in deinem collision circle befindet.

    GML-Quellcode

    1. if point_in_circle(enemy_x,enemy_y,x,y,100)
    2. {
    3. collision = true;
    4. }else (collision = false)


    also die ersten 2 argumente sind für die zu prüfenden koordinaten, die nächsten 2 sind wo der collsision circle sein mittelpunkt hat,dann als letztes der radius


    und zu deinem code:

    du willst ja nicht prüfen ob der enemy selbst in dem collision circle ne kollsion hat oder?
    es könnte heißen:

    GML-Quellcode

    1. ​if collision_circle(obj_player.x,obj_player.y,50,obj_enemy,false,false)


    und was macht das >2 da? also im grunde fragst du mit deinem code ab wenn ein kollisionsring beim enemy ist und mit dem enemy kollision hat und >2 ist dann.....
    aber das geht glaub ich nicht so.du weißt der collision circle hat einen radius von 50 das hast du angegeben wieso noch das >2? naja ich hoffe ich konnte dir ein wenig helfen.

    kenne das selbst bin auch noch anfänger.

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

  • in enemy:

    GML-Quellcode

    1. var xx = x;
    2. var yy = y;
    3. var radius = 50;
    4. var collisions = ds_list_create();
    5. with (obj_enemy) {
    6. if (point_distance(x,y,xx,yy) <= radius) {
    7. if (collision_circle(xx,yy,radius,obj_enemy,true,true)) {
    8. ds_list_add(collisions,id);
    9. }
    10. }
    11. }
    12. if (!ds_list_emty(collisions)) {
    13. // Code . . .
    14. }
    15. ds_list_destroy(collisions);
    Alles anzeigen

    132 little bugs in the code. 132 little bugs. Fix a few, set the compiler to stew, 172 little bugs in the code... :vogel:
  • @Brodi:
    ​Wozu das point_distance: die eigene distanz von sich zu sich? Ist ja gleich 0!


    Rhazul schrieb:


    in enemy:
    ​var xx = x;
    var yy = y;

    with (obj_enemy) { //Dieses "with" ist wichtig!!!
    if (point_distance(x,y,xx,yy) <= radius) {
    ...
    }
    }


    ​Die Variablen xx, yy beziehen sich auf die entsprechende Instance.
    ​Aber die x,y Variablen innerhalb des "with" beziehen sich auf jedes gleiche Objekt (obj_enemy).
    ​Diese x,y könnten also die Koordinaten einer beliebigen anderen Instance sein.