博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
游戏开发基础:方向键的组合,八方向实现
阅读量:5896 次
发布时间:2019-06-19

本文共 583 字,大约阅读时间需要 1 分钟。

转摘自:的方向键的组合,八方向实现

在游戏中,有一种情况是斜向移动,就是同时按下两个方向,形成斜线操作,在Win32GDI开发中,可以通过在逻辑循环里加入键盘状态判断取得多个键进行操作,但是在Silverlight中键盘的事件是单个的,不能取得多个键盘的状态,园友提出一个问题,就是我的Flyer小游戏只能上下左右控制,而不能斜向行动,今天我们来解决这个问题,实现八个方向的正确行为动作。

针对这个解决方案初步的想法,对于键盘的输入来说,可以使用一个队列进行键盘状态保存,比如使用一个List保存Key的状态,然后在KeyUp的时候释放掉没有用的Key,判断一下按下的顺序就可能得到所有方向的状态,但是这有几个问题,在按下多键都会出重复键问题,而按下的顺序未必准确,那么出队列未必一定是准确的释放,比如我可以同时按下ABC,而释放顺序是BCA,得到的结果就不是一个准确的List,这种方法看起来可行,但是实际过程中却不一定是这样的情况,所以问题没有解决。

这个实现可能有很多解决方案,在这里我们用一个直观的解决方案来解决,使用状态表来完成,可以分析出来一个按键行为和行动方向行为的共性,他们是一个3x3的图像:

从上面的图形可以看出来,是一个3x3的二维数组,看看和什么很像呢——游戏手柄,我们可以用一个二维数组来保存所有的状态,将按下的数字组合查表得到对应的状态。

转载地址:http://cexsx.baihongyu.com/

你可能感兴趣的文章
堆栈详解
查看>>
SQL 三种分页方式
查看>>
查看linux是ubuntu还是centos
查看>>
html video的url更新,自动清缓存
查看>>
IOS Xib使用——为控制器添加Xib文件
查看>>
CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙步骤
查看>>
服务器修改用户密码注意iis部署的网站问题
查看>>
react 取消 eslint
查看>>
关于Cookie
查看>>
【设计模式】模板模式
查看>>
Uncaught Error: Bootstrap's JavaScript requires jQuery
查看>>
js引用类型之valueof和tostring(三)
查看>>
记使用vue-awesome-swiper遇到的一些问题
查看>>
C#数组初始化(全)
查看>>
(二) solr 索引数据导入:xml格式
查看>>
和小哥哥一起刷洛谷(4) 图论之广度优先搜索BFS
查看>>
OpenCV入门系列(3):VS 2012 RC + OpenCV + x64的Hello world
查看>>
2019.01.02-dtoj2293-幻想乡开店(shop)
查看>>
bzoj5056:OI游戏
查看>>
Codeforces Round #539 div1
查看>>