开发日志-4-27

开发日志记录时间:2010.4.27

调试记录:

问题:

(1)    当人物处于跳跃状态时,不应当衰减水平速度velocity.X,如果衰减了这个值,那么游戏人物就会很快的停下来,水平位移很小。

(2)    游戏的速度数据是从下一个状态中得到的,并且强制为这个值,那么就导致游戏人物的状态和上一个状态无关,显得很不自然,比如,走动->跳跃,因为跳跃的X速度是零,所以永远是直跳,不论前一个状态是站立还是走动。

设想:

(1)使用onground(Bool类型)这个标志量来判断是否在空中,如果在空中,则不去衰减水平速度(_data.velocity.X *= _data.drag.X;)。这个检测放在循环里,作为一个LoopCheck Change。

(2)在Animate()这个状态转换里,把前一个状态和后一个状态的水平速度做一个叠加。

那什么时候停止呢?在UpdateY()方法里,有一个LoopCheck Change,检测脚底坐标大于起跳坐标时,改变onground = true,并执行Animate(_data,“idle”)。这时候前一个状态Jump的水平速度为零,后一个状态Idle的水平速度也为零,则水平速度叠加值为零。物体停止。

问题:

人物在走起来之后,由于水平速度是叠加的,最大速度将是设定速度的两倍,从静止到走动不是均匀的,而是有个忽然加速的过程。 这个数据显得有点怪异。从走动到停止也不是均匀的:-240 ~-50~-120~-50,这样一个波动。

从走动到跳跃,这时叠加得到的是设定的速度120,而不是此时人物走动的速度240,所以跳跃的距离会显得短一些。

而且有一个严重的问题就是:蹲下,踢腿等动作不能做了。

思考:

虽然实现了斜跳,但是整个过程很不自然,数据之间的转换不够合理。需要继续改进。

posted @ 2010-04-28 13:46  向恺然  阅读(195)  评论(0编辑  收藏  举报

我必须说的是:我崇尚开源,但鄙视剽窃。本博客所有引用的图片,文章,和代码,均只作为研究学习使用,不作为商业应用。如果我无意中冒犯了您,请发消息留言,我将立即删除。