6611| 9
|
[编程算法] [11/19更新]Unity用输入处理系统 设计思路 |
| ||
发表于 2014-11-18 23:26:14
|
显示全部楼层
| ||
发表于 2014-11-19 00:34:30
|
显示全部楼层
点评
不光是连击啦,你可以用这个输入系统玩格斗游戏了(当然现在只有输入系统……
| ||
| ||
发表于 2014-11-19 07:40:47
|
显示全部楼层
点评
唔……写在fixedUpdate里会出什么事么?我现在就是全部写在里面的,貌似还没出事的样子……
那样的话,确实lz的方案看不出什么问题呢,唯一要注意的就是别忘了——玩家按P暂停时,要不要清除队列,另外别把队列维护写在fixedupdate()里
用状态机的方式我也想过,但是那样需要的中间态太多了,不好办……
不用的,只在按下了可能有后续动作的按键之后才会被扫描一次,而且只扫描规定的数量,一旦发现不匹配就不继续扫了。啊,不过分享教程感谢~
| ||
发表于 2014-11-19 09:23:16
|
显示全部楼层
点评
另外关于暂停这个事情,其实我本来就是打算用timeScale来暂停的,所以就全部写到fixedUpdate里去了。其实我就是在研究怎么暂停的时候,才知道fixedUpdate的这个特性,之前以为只是个能自定义时间特性的update罢了www
我明白意思了……目前我的想法是,暂停键不算是“角色控制”的一部分,所以由另外的脚本响应,不包括在这个角色控制的脚本里,这样的话就不会干扰到按键队列的维护问题了。
| ||
发表于 2014-11-19 09:48:04
|
显示全部楼层
点评
我又想到一个方法………详细看回复
其实这样,你把“不按键”也想象成一种按键,那样就判断一组连续的按键是不是符合要求,就行了。说到底肯定是要有个队列来存储按键信息的。
32这样不行的啦……如果Sleep的话就把整个程序阻塞住了(先不管Unity我就从Sleep原来的特性来看),什么事情都不能做了。
| ||
发表于 2014-11-19 13:38:11
|
显示全部楼层
点评
超烦,还有就是同时按键的判定问题,因为实际按的时候通常都不是真的“一起按”的,而是先按了某个再按同时按住,于是这个又要针对不同情况写一堆判定,总之就是程序的优雅度各种下降(叹
确实,最烦的是搓技能过程中会出现“快速按过几个按键”和“快速按上几个按键”,得区别对待也是醉了
哦,这样我就明白了。嘛……我觉得用定时器控制好麻烦的所以就没这么做,而是把不按键也当成一种按键来处理,不过说到底我现在这个队列,也是建立在这个设计的基础上的
@larrymario 确实有问题。。。更新了一下设计。。。
——我也想过用这样的方法实现,而且确实能节省空间,不过……感觉写起来好烦啊(躺),关键一点就是对于“不按键”这个事件,我觉得处理起来很麻烦……
有一点我不明白……onKeyUp的时候就要删除这个keyCode?那样岂不是这个链里只能存储“我同时按住了多少个键”数目的keyCode么……连击系统我似乎是明白了,就是靠计时器来判定是否还在一个连续的按键序列里,——
| ||
发表于 2014-11-19 14:45:41
|
显示全部楼层
点评
懂了,其实32你这张纸上写的和我现在做的是差不多的ww不过对于按键值的处理我有更好的方法(大概),过会儿更新的时候再说
| ||
发表于 2014-12-11 17:00:53
|
显示全部楼层
点评
求讲解mugen里的状态机架构是怎样的,说实话我现在这个在实际做的时候感觉有问题了……目前项目做到现在,已经从一个state变成了多个state共同控制角色状态,光是一个state我已经不知道该怎么管理状态了(捂脸
| ||