正常游戏期间的 FlxReplay

FlxReplay during normal gameplay

我的游戏中有一堆 NPC 对象是通过 FlxReplay 实例控制的。他们阻止我使用鼠标和键盘直接控制英雄。有没有办法播放 FlxReplay 的下一帧,读取输入,然后将输入恢复到之前的状态?

示例:

package com.geokureli.testbed;

import flixel.FlxG;
import flixel.FlxState;
import flixel.system.replay.FlxReplay;
import flixel.ui.FlxButton;

class TestBed extends FlxState {

    var replay:FlxReplay;

    public function new() { super(); }

    override public function create():Void {
        super.create();

        replay = new FlxReplay();
        replay.load("0\n0km100,100,0,0\n100km178,240,2,0\n101km178,240,1,0\n102km178,240,-1,0\n103km178,240,0,0\n");

        add(new FlxButton(50, 30, "test", function(){ trace("click"); }));
    }

    override public function update(elapsed:Float):Void {

        if (replay != null) {

            replay.playNextFrame();

            if (FlxG.mouse.justPressed)
                trace("replay click");

            if (replay.finished) {

                replay = null;
                trace("done");
            }
        }

        // --- REVERT INPUTS HERE

        super.update(elapsed);
    }
}

重播处于活动状态时我无法单击按钮。我想知道我是否可以在所有重播期间换掉 FlxG.inputsFlxG.keys/mouse,然后再换回原件。或者,如果我可以针对回放使用的特定输入,而不影响主要玩家的输入?

我想我已经为 Ludum Dare 38 做了类似的事情。 我将重播从它对 FlxG 控件的依赖中分离出来。 检查 MyReplay class:

https://github.com/boorik/Ludum38/blob/master/source/MyReplay.hx

这样我就可以在不干扰 NPC 回放的情况下与游戏互动。 在我的游戏中,你和游戏中的所有角色一起玩,记录他们的重播。在录制一个回放时,其他录制的回放会在其目标 NPC 上播放。

你可以在这里查看结果:

http://games.boorik.com/ludumdare38/

希望我已经理解您的问题,这对您有所帮助。