这是本文档旧的修订版!
为什么要用做游戏控制器?
我们制作游戏的时候会遇到这样的情况:我们制作好了一个游戏角色,希望能够控制他。 通常的情况,我们会对其进行键盘或者手柄等的按键设置。例如:W控制上,S控制下,AD控制左右。
这个时候问题来了,如果这个角色是个公用角色,在多人游戏的时候有N个玩家都可以控制他们自己的角色,该怎么办? 设置WASD和↑↓←→两套按键?不行,那样会让两个玩家键位控制同一个角色,或者同时控制了所有角色。
比较土的方法就是有多少个玩家就创建多少个精灵……但这方法太傻了。
所以这篇就是讲我们该如何用控制器的方法,在多人游戏里控制角色的。
控制器是什么?
控制器在本教程里是一个精灵,每当有一个玩家角色被创建的时候,就会同时创建一个控制器精灵与这个玩家角色进行对应匹配。 例如为角色和控制器都添加player的私有变量,在创建角色的时候会赋予角色playerID,与此同时将这个ID赋予控制器,使他们之间存在对应关系,方便选取。
控制器,就是连接操作和角色之间的一个中转器。 当按下键盘或手柄按键的时候,会通知与键位对应的控制器,再由控制器查找与其对应的角色,实现只针对这个角色的操作传递
控制器精灵,我做了个手柄的图标,但其实游戏里是看不到的:
控制器行为
控制器的作用,就是把我们输入的操作中转一下,再通过控制器的playerID查找和他匹配的角色,并告诉他输入了什么操作。 例如我按了J键,对应控制器的攻击。这样我在编写角色的攻击操作的时候就不需要写按J键攻击,而是抽象成为控制器的“攻击键”按下了,产生攻击。
为了方便的模拟按键的on pressed(按下)和is down(按住),我们需要在控制器上能够标记出这两个操作对应的结果。 这里推荐使用FSM行为。