开发日志-5.4
键盘值的查找:
在数据驱动的游戏里,用这样的结构存储着游戏的键盘操作表
public string[] StAction = new string[]{
"R,idle",
"J,wentdown",
"A,frontWalk,30",
"Space,jump",
"U,fightOfFoot",
"AAI,downRoll",
"W,upWalk",
"S,downWalk",
"K,jumpCut",
"D,backWalk,33"
};
由于左右映射的问题,需要把对应前进后退的两个键值找出来,如果如上面—— "A,frontWalk,30",这样的做法,把键值的Code作为数据保存起来,是可以实现的, 但每次都需要手动查找这个键盘值,如果这个值标错了,程序就会出错。所以上面的做法可以实现,但并不够好。
记得在Wpf程序设计指南中看到过取得颜色表的例子,沿着这个思路,Property[] properties = typeof(Colors).GetProperties();但是并不存在Keys这样的类。所以这个思路也不行。
|
在Enum这个类里有一个静态的方法Parse 方法, public static Object Parse( 但如果在反射的思路上深入深入,也应该是可以得到解决的。例如这样的方式: Type enumType = typeof(Key); |
反射是一个值得深入研究下去的课题。
下面该是什么了?
在问这个问题之前,需要提醒一下,因为游戏采取的是KeyUp—复原 的方式,所以单机操作两个人物的时候,会造成冲突,这是一个隐含的Bug,特别是单机双人对战的时候。
接下来,应该是碰撞了。
碰撞:最重要的当然是游戏人物之间的碰撞,具体细化一下:
(1)攻击框--攻击框
(2)攻击框--防守框
(3)防守框--防守框。
从碰撞的方向上来讲:LeftCollision,RightCollision,UpCollision,DownCollision,能区分碰撞的方向,这一点对于可以从某个方向穿越的东西来说是很重要的。
既然是碰撞,就不是一个人的事情,俗话说的好“一个巴掌拍不响”,或许也不是两个人的事情,而是一个人和一群人的事情,更确切的说是每个人和某一群人的事情。这也就是说,碰撞检测要检测一群人,而这个人群是不断变化的,因为每个人都是在走动,有些人会很快地走到跟前,有的人会很快离开,如果能够清晰的辨别出来这样一个范围,也就降低了碰撞检测的数量。碰撞检测是在交叉影响着。将这样一个范围保存在哪里呢,以某人为中心保存一份自己的数据?还是将地图划分成很多的区域,去检测位于这些区域内的东西,如果是这样,还要和地图紧密地结合起来。

浙公网安备 33010602011771号