代码之家  ›  专栏  ›  技术社区  ›  George Kurelic

正常游戏中的FlxReplay

  •  2
  • George Kurelic  · 技术社区  · 6 年前

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

    例子:

    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.inputs FlxG.keys / mouse 在所有重播过程中,然后交换回原稿。或者我是否可以针对重播使用的特定输入,而不影响主要玩家的输入?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Gama11 zzapper    6 年前

    我想我为Ludum Dare 38做过这样的事。 我将重播从其依赖项分离到 FlxG 控制。 检查 MyReplay 类别:

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

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

    您可以在此处查看结果:

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

    我希望我已经理解了你的问题,这会有所帮助。