Object distance ermitteln und id des Objectes zurückgeben.

  • GM 8
  • Object distance ermitteln und id des Objectes zurückgeben.

    Schönen Spätnachmittag! :)

    Ich hab wieder mal ein kleines Problem, da ich gerade nicht weiß wie ich es angehen sollte. Und zwar ich habe eine IF-Abfrage:

    GML-Quellcode

    1. if(distance_to_object(obj_monster1) < 300 && shoot == false) {/*....*/}

    So diese If-Abfrage funktioniert so wie sie funktionieren sollte. Sie überprüft ob ein obj_monster näher als 300px ist, zumindest denk ich das && natürlich ob shoot gleich false ist.
    Zu meiner Frage:
    Kann ich irgendwie die ID vom obj_monster zurückgeben? d.H. so in etwa?

    GML-Quellcode

    1. if(object = (distance_to_object(obj_monster1) < 300) && shoot == false)

    Natürlich klappt das nicht, weil da ja true oder false zurückgegeben wird. Aber wie müsste ich das machen, das ich das Object mir merke das in der Nähe ist?

    P.S.: Sollte wie bei einen TD-Defense sein.

    MfG Rodrog
    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Ergo: Je mehr Käse, desto weniger Käse.
  • Jetzt passd es schon fast. Nur schießt der Turm jetzt immer, auf das nächstegelegene Object und berücksichtigt die Reichweite nicht. Er schießt auch nicht logisch, das ist jetzt aber klar, da er immer auf das nächste schießt und nicht auf dass, am weitesten vorne ist (Dies könnte ich aber glaub alleine lösen)
    Naja wie gesagt, schießt der Turm immer auf das näheste Object und berücksichtig dabei die Reichweite nicht. Was ist falsch?

    Step-Event

    GML-Quellcode

    1. var _id;
    2. _id=instance_nearest(x,y,obj_monster1);
    3. if (distance_to_object(_id)<rw && shoot == false)
    4. {
    5. object = _id;
    6. alarm[0] = 30;
    7. shoot = true;
    8. }


    Alarm[0]

    GML-Quellcode

    1. shoot = false;
    2. instance = instance_create(x,y,obj_muni1)
    3. instance.speed = 4;
    4. instance.direction = point_direction(instance.x,instance.y, object.x,object.y);
    5. instance.image_angle = instance.direction;


    Edit: Sry mein Fehler, es lag daran, das ich die rw auf 300 hatte, und das der Durchmesser ist. Jetzt musste ich einfach /2 und alles passd :)
    Dankeschön :thumbsup:

    MfG Rodrog
    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Ergo: Je mehr Käse, desto weniger Käse.