开发日志-4.29

开发日志记录时间:2010.4.29    Thuresday

目标:

1) 实现多人物,并且同类型共用一个数据。增加部分游戏场景物体,比如木桶之类。

2) 实现碰撞。

3) 人物在遭受打击时表现出应有的状态。

共用数据时,就需要在每个人物内部保留一份独特的数据,AnimData这个类里的属性(实际上就是一些数据)就不能够再是Static的了。更改为实例字段。

思考:

另外发现数据源除了被填充之外,还在循环里被调用,那么这些数据在整个游戏过程中就会始终存在,形成数据冗余,是否能够避免呢?

这个类里面有些数据是需要填充到Player的属性里的,有些在游戏的过程中实时查询调用,比如互斥这个数据是需要实时查询的。

整理:

让我们来看看一个游戏人物需要哪些数据来驱动自身的运转:

(1)   需要一个xml文件来保存所有的图片名称,以便在初始化的时候,将这些图片保存到一个List<WriteableBitmap>里面。但同时发现方法里把图片在存储的文件夹信息是硬编码在方法里面的。这是一个隐性的Bug。需要改进。

(2)   另外一个重要的数据来源就是AnimData这个类。

double[] playerInitData

动力学属性表

初始位置,阻力加速度,动力加速度,物体质量,最大速度,重力

string[] StAnimation

动(画)作表

动画名称,动画序列,动画执行间隔,动画X速度,动画Y速度,可立刻恢复动画

string[] StAction

键盘操作列表

这里的左右设置需要和Animate()方法里的Facing的判断保持一致

int[][] mutex

互斥动作列表

用数组的索引代替了动画,所以这个数组要和double[] playerInitData保持一致

int[][] InterludeMatch

过渡动作指导表

在这里同样用索引来表示动作,来表示动画和动画之间是否需要过渡以及需要哪一个过渡

List<int[]> AmendCoordinate

坐标指导表

存储每一个动作序列中每一帧图片的纠正坐标(使动作和上一个动作的脚底保持一致),防守范围框的坐标和长宽,攻击范围框的坐标和长宽。这个表中的数据要和动作表里的动作序列一一对应

 

改进:

保持代码的一致性是很重要的。有很多类似 ××方法(A _a,PlayerTemplate _data),决定把所有类似的方法中的PlayerTemplate参数放在后面。

 

遇到问题:

在创建同类型的多个游戏人物时,遇到了一个问题,同类型的游戏人物是基于同一套游戏逻辑的,也就是说他们都基于同一个类的同一套方法,为了方便,把这些方法都写成了静态方法,这本来没有什么大问题;要紧的是为了方便,使用这些方法的时候又加了静态属性。

现在由一个人物变成了多个人物,共用方法的时候也共用了数据属性,而这些属性又是静态的,一动全动,于是问题出现了,虫子出来了。

教训:

要考虑全面,如果想要共用方法,用了静态方法,注意不要使用静态属性。


 

转载于:https://www.cnblogs.com/GameCode/articles/1725010.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值