Kopie des Spielers mit Delay

  • GM 7

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

  • Kopie des Spielers mit Delay

    Hallo Leute!
    Ich wollte nur schnell eine Frage einwerfen, an der ich schon länger herumbrüte:
    Ist es möglich bzw wie würde es am einfachsten gelingen, eine Kopie des Spielcharakters einzufügen, der die selben Movements als die eigentliche Figur macht, aber mit einer Zeitverzögerung hinter der Figur? (zB als Reaktionsmoment)
    Liebe Grüße!
  • Dann mach so eine Art Motion Blur, welches 10 Steps unsichtbar ist und erst dann einmal kurz sichtbar wird.

    Wenn du willst mach ich dir ein example.

    EDIT: Bitte schon ich hab dir eins gemacht.
    Dateien
    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

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

  • Ok, das is schon hilfreicher ;)
    Danke mal für die Mühe. Das Problem ist aber immer noch, dass einzelne Sprites gezeigt werden.
    Gibt es zum Beispiel eine Möglichkeit, die exakte Spielfigur nochmal zu programmieren (+ inputs via keyboard), aber diese inputs eben verzögert an die Kopie weiterzugeben.
  • Mach das doch etwa so:

    GML-Quellcode

    1. //Player Step
    2. var Blur;
    3. Blur=instance_create(x,y,obj_Blur)
    4. Blur.sprite_index=sprite_index
    5. Blur.image_single=image_single

    Dann gibt das einfach dem Blur und dem Player die selbe Sprite und Einzelbild und schon müsste es funktionieren.
    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
  • Ok, das geht schon immer mehr in die Richtung, die ich benötige!
    Das Problem ist jedoch noch, dass der "Shadow" nicht den gleichen physikalischen Gegebenheiten ausgesetzt ist. Nicht von Schwerkraft beeinflusst (es sei denn, es ist die Spielfigur), etc.
    Deswegen habe ich vorher gemeint: Eine Kopie des Objects mit einer Inputdelayzeit von "Geschwindigkeit der Spielfigur / Distanz zwischen Spielfigur und Kopie". Wäre sie damit nicht zB der Schwerkraft, naja, "logischer" ausgesetzt? Damit kann sie zB unabhängig von der Spielfigur sterben etc.

  • Das Problem ist jedoch noch, dass der "Shadow" nicht den gleichen physikalischen Gegebenheiten ausgesetzt ist. Nicht von Schwerkraft beeinflusst (es sei denn, es ist die Spielfigur), etc.

    Warum denn das ?
    Der Blur ist immer doch genau auf den selben x + y Koordinaten wie der player vor 15 Steps
    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
  • Larsi schrieb:


    Das Problem ist jedoch noch, dass der "Shadow" nicht den gleichen physikalischen Gegebenheiten ausgesetzt ist. Nicht von Schwerkraft beeinflusst (es sei denn, es ist die Spielfigur), etc.

    Warum denn das ?
    Der Blur ist immer doch genau auf den selben x + y Koordinaten wie der player vor 15 Steps

    Larsi schrieb:


    Das Problem ist jedoch noch, dass der "Shadow" nicht den gleichen physikalischen Gegebenheiten ausgesetzt ist. Nicht von Schwerkraft beeinflusst (es sei denn, es ist die Spielfigur), etc.

    Warum denn das ?
    Der Blur ist immer doch genau auf den selben x + y Koordinaten wie der player vor 15 Steps
    Ja aber genau, dass is ja das Problem ;) Es ist ein Blur, das auch in der Luft stehen könnte, wenn dies 15 Steps nach der Spielfigur ausgeführt wurde.

    Die Eingaben werden gebuffert und zeitversetzt an den DummySpieler geschickt. (-> Datenstrukturen)
    Ok, aber wie führe ich genau diese Zeitversetzung aus?
  • zB.:

    GML-Quellcode

    1. if keyboard_check(...) {
    2. add_command(command, delay) } //z.B. "vk_up" und "10"
    3. //add_command: (ganz einfach mit arrays, würde anders sicherlich auch gehen)
    4. _counter += 1
    5. command[_counter] = argument0
    6. _timer = argument1
    7. //und im step event vom schatten:
    8. _timer -= 1
    9. if _timer<=0 {
    10. run_command(command[...]) }
    Alles anzeigen


    Vergiss es, das ist viel zu umständlich.
    Dieser Beitrag wurde bereits 8.675.628 mal editiert, zuletzt von »levarris07« (Heute, 11:33)
  • create event vom Verfolgerobjekt:

    parent = // Name des zu verfolgenden Objekts

    dssize = 20; // dies ist, wenn mans so bezeichen kann, deine Verzögerung
    dsx = ds_queue_create(); // die zu übertragende x variable
    dsy = ds_queue_create(); // die zu übertragende y variable
    dsspr = ds_queue_create(); // der zu übertragende sprite_index
    dsani = ds_queue_create(); // der zu übertragende image_index

    for(i=0;i<dssize;i+=1){
    ds_queue_enqueue(dsx,x);
    ds_queue_enqueue(dsy,y);
    ds_queue_enqueue(dsspr,sprite_index);
    ds_queue_enqueue(dsani,image_index);
    }




    Step event vom Verfolgerobjekt:

    // Aus der DS Liste die nötigen Variablen rauslesen
    x = ds_queue_dequeue(dsx);
    y = ds_queue_dequeue(dsy);
    sprite_index = ds_queue_dequeue(dsspr);
    image_index = ds_queue_dequeue(dsani);

    // Die neuen Variablen in die DS Liste setzen
    ds_queue_enqueue(dsx,parent.x);
    ds_queue_enqueue(dsy,parent.y);
    ds_queue_enqueue(dsspr,parent.sprite_index);
    ds_queue_enqueue(dsani,parent.image_index);


    ist nur ein Beispiel, empfohlen ist natürlich die variablen in die DS Liste zu setzen die du auch wirklich brauchst

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von Fin ()