Autos die durch Flagen fahren.

  • GM 8

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

  • Autos die durch Flagen fahren.

    Mir ist kein besserer Titel eingefallen. Ich habe folgendes Porblem wo mir einfach keine Lösung einfiel. Ich möchte ein Gegner erstellen. Der durch gesetzte Flagen in der Reihenfolge durch fährt. Er soll zu einem zufälligem Punkt zwischen der roten und grünen Flage fahren. Sobald er diesen Punkt ereicht hat soll er zur den nächstplatzierten Flagen fahren. Und so weiter. Jetzt zu dem Problem: wie bekomme ich einen Zufälligen Punkt zwischen den nächsten zwei Flagen?


  • Du machst das am besten so, dass du in jeder flagge im Create Event der roten Flaggen das hier schreibst:

    GML-Quellcode

    1. _id = instance_number(obj_flagge_rot); //Das hier kommt ins Create Event der roten flagge.
    2. _id = instance_number(obj_flagge_gruen); //Das hier kommt ins Create Event der grünen flagge.
    3. //Du musst natürlich die Namen der Objekte austauschen!


    im Gegner schreibst du dann:
    Create Event:

    GML-Quellcode

    1. current_id = 0;


    Step Event:

    GML-Quellcode

    1. var dist, green, red, dir;
    2. if(tx == -1){ //Verhindert, dass die zufällige Position mehrfach gewählt wird.
    3. with(obj_flagge_rot){
    4. if(_id == other.current_id){
    5. other.red = id; //Jetzt wissen wir die ID der nächsten roten Flagge.
    6. }
    7. }
    8. with(obj_flagge_gruen){
    9. if(_id == other.current_id){
    10. other.green = id; //Jetzt wissen wir die ID der nächsten grünen Flagge.
    11. }
    12. }
    13. dist = point_distance(red.x,red.y,green.x,green.y); // Der Abstand der zwei Flaggen.
    14. dist = irandom(dist); //Zufälliger Abstand nehmen.
    15. dir = point_direction(red.x,red.y,green.x,green.y); //Wird später wichtig.
    16. tx = red.x+lengthdir_x(dist,dir);
    17. ty = red.y+lengthdir_y(dist,dir);
    18. //Nun haben wir den Punkt.
    19. }
    20. if(x == tx && y == ty){ //Falls der Gegner am Punkt ist,
    21. current_id += 1;
    22. if(current_id > instance_number(obj_flagge_rot)){
    23. current_id = 0; //Verhindert, dass Flaggen, die nicht existieren gewählt werden.
    24. }
    25. tx = -1; //Wird der nächste Punkt fetgelegt.
    26. }
    Alles anzeigen

    Im Step Event muss natürlich noch die Bewegung des Gegners hin.
    (Alles ungetestet)

    -Tobi97
  • Das wird so nicht gehen, da dann x und flagge x genau gleich sein muss...
    das sollte noch gerundet werden, sonst geht das nicht.

    Edit: Oh, sorry uralt...
    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