Vmo8 Wiki

Vmo8 用户的地盘, C2/C3开发者的乐园

用户工具

站点工具


通过fsm实现游戏控制器

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
通过fsm实现游戏控制器 [2018/02/01 22:52]
114.250.182.194
通过fsm实现游戏控制器 [2020/07/06 15:17] (当前版本)
216.244.66.228 已恢复为旧版 (2018/02/01 22:23)
行 18: 行 18:
 控制器,就是连接操作和角色之间的一个中转器。 控制器,就是连接操作和角色之间的一个中转器。
 当按下键盘或手柄按键的时候,会通知与键位对应的控制器,再由控制器查找与其对应的角色,实现只针对这个角色的操作传递 当按下键盘或手柄按键的时候,会通知与键位对应的控制器,再由控制器查找与其对应的角色,实现只针对这个角色的操作传递
- 
-//控制器精灵,我做了个手柄的图标,但其实游戏里是看不到的:// 
- 
-{{:pasted:20180201-222514.png}} 
- 
- 
-**控制器行为** 
- 
-控制器的作用,就是把我们输入的操作中转一下,再通过控制器的playerID查找和他匹配的角色,并告诉他输入了什么操作。 
-例如我按了J键,对应控制器的攻击。这样我在编写角色的攻击操作的时候就不需要写按J键攻击,而是抽象成为控制器的“攻击键”按下了,产生攻击。 
- 
-为了方便的模拟按键的on pressed(按下)和is down(按住),我们需要在控制器上能够标记出这两个操作对应的结果。 
- 
-这里推荐使用FSM行为,FSM行为可以轻易把按键操作转换为enter FSM和current FSM。在配置角色事件的时候将条件写为enter FSM = "攻击"或current state FSM = "攻击" 
- 
-为此,我们需要为控制器添加大量的FSM行为,每一个FSM对应一个按键。虽然丧心病狂,但其实一次写完就OK了: 
- 
-{{:pasted:20180201-223824.png}} 
- 
- 
-**按键的对应关系事件** 
- 
-多人游戏一般会有固定的键位操作,例如WASD对应1P,↑↓←→对应2P等等。如果是这样就可以简单的配置输入操作与控制器之间的关系了。 
-当然,如果是可变的键位与角色匹配关系,则需要再做一次对应处理。这个后面会再说。 
- 
-这里先简单的展现一下按键对应的事件配置方法: 
- 
-{{:pasted:20180201-224148.png}} 
- 
-如图,首先pick到与键位对应的那个控制器,然后通过on pressed按键使对应的FSM行为进入on状态,通过not down来恢复到off状态 
- 
- 
-**传递应用到角色事件里** 
- 
-控制器配置完毕后,就可以开始配置角色的事件了: 
- 
-  * on pressed 
- 
-{{:pasted:20180201-224529.png}} 
- 
-通过检测jump的FSM enter "on",了解到是哪个ID的控制器按了跳键。 
-接下来pick到与这个控制器对应的角色,并使其进入jump状态 
- 
-  * is down 
- 
-{{:pasted:20180201-224742.png}} 
- 
-is down事件持续进行,所以就需要先判断角色在FSM下,并用for each遍历所有的控制器和角色。 
-通过角色pick到对应的控制器,检测到防御键处于持续按住的状态,于是进入防御状态。 
- 
- 
- 
-===============未完待续================= 
通过fsm实现游戏控制器.txt · 最后更改: 2020/07/06 15:17 由 216.244.66.228