Collison

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

  • Hallo,
    ich arbeite an einem Platform Game.
    Es soll passieren, dass wenn man den Gegner berührt, man leben verliert! (Nicht wie bei der Engine von YOYO Games) :headtouch: :headtouch: :headtouch:
    Mein Problem ist aber, dass man in kurzer Zeit alle Leben verliert! (wegen der langen Collision) Habs schon mit Variablen versucht, aber nichts ging!
    Ich möchte nicht, dass der Gegner zerstört wird!
    Leider kenn ich mich mit den Alärmen garn nicht aus!
    Das Spiel basiert auf einer Engine: http://www.gm-d.de/wbb/index.php/Thread/10056/
    Hab bisher nur das Schwert eingefügt!

    GML-Quellcode

    1. // --- Der Spieler ---
    2. if (place_meeting(x,y,obj_player)) {
    3. if (global.sword = true)
    4. {instance_destroy()}
    5. else {if (obj_player.vspeed > 0) && (obj_player.y < y) {
    6. instance_destroy();
    7. } else {
    8. health -= 5; global.he=true; alarm[0]=100;}}
    9. }
  • Wenn man zu viel Health auf einmal verliert, verringer doch den Wert, der bei einer Kollision abgezogen wird.
    █████ ██ █ ████ everything ███ █████ is █████ ████ ████ fine ████ ███ █ ██████ love.
    █████ ███████ ███ your █████ ████ government.
  • Ich schätze mal er will, das man bei Berührung des Gegners nur einmal Leben verliert, jedenfalls bis man sich wieder vom Gegner gelöst hat und weg ist. ;)

    Erstell doch eine Variable global.collisionchek oder so ähnlich. ;) Wenn du mit dem Gegner kollodierst setzt du die Variable auf true. ;) Dabei ziehst du einmal Leben ab. Wenn du also bei der collision immer überprüftst ob die Variable auf true steht, dürfte doch eigentlich nur einmal Leben abgezogen werden. ;) Wenn die collision vorbei ist, setz das ganze wieder auf false.
  • Robinx schrieb:

    Ich möchte nicht, dass der Gegner zerstört wird!

    Wie soll das den gehen?
    Wenn der Gegner nicht zerstört wird wird die Kollision ja x-mal wiederholt, oder nicht?
    Es muss etwas passieren.
    z.B.: Dass dein Spieler zurückgeschleudert wird, oder der room nochmal neugestartet wird, oder eben der Gegner zerstört wird.
  • RE: RE: Collison

    gameprogger300 schrieb:

    Robinx schrieb:

    Ich möchte nicht, dass der Gegner zerstört wird!

    Wie soll das den gehen?
    Wenn der Gegner nicht zerstört wird wird die Kollision ja x-mal wiederholt, oder nicht?
    Es muss etwas passieren.
    z.B.: Dass dein Spieler zurückgeschleudert wird, oder der room nochmal neugestartet wird, oder eben der Gegner zerstört wird.

    Nein, so sehr schränkt dich der GM nun auch wieder nicht ein. ^^

    Hier mal eine ganz simple Möglichkeit: im Create Event des Spielers eine Variable deklarieren:

    GML-Quellcode

    1. collision = false;

    Im Kollisions-Event des Spielers wird dann folgender Code ausgeführt:

    GML-Quellcode

    1. if(collision = false) {
    2. health -= 1;
    3. collision = true;
    4. }
    5. alarm[0] = 2;

    Im Alarm[0] dann:

    GML-Quellcode

    1. collision = false;

    Da das Alarm-Event immer wieder auf 2 gesetzt wird, wird es erst ausgelöst, wenn keine Kollision mehr besteht.

    Das sollte so funktionieren. Ist jetzt natürlich nur ein Beispiel, wie ich es machen würde. Kann gut sein, dass es noch angepasst werden muss. Getestet hab ich es nicht.
    █████ ██ █ ████ everything ███ █████ is █████ ████ ████ fine ████ ███ █ ██████ love.
    █████ ███████ ███ your █████ ████ government.
  • Ich schätze, du hast es falsch verstanden. Die "2" wiederholt nur das Aufrufen des Alarms und verhindert somit, dass er ausgeführt wird. Erst wenn diese Wiederholung nicht mehr stattfindet (wenn keine Kollision mehr besteht), wird der Alarm wirklich ausgeführt. Und erst dann ist es möglich, wieder Energie zu verlieren - sofern mein Code oben funktioniert. Wie gesagt, hab's nicht getestet.
    █████ ██ █ ████ everything ███ █████ is █████ ████ ████ fine ████ ███ █ ██████ love.
    █████ ███████ ███ your █████ ████ government.