开发日志-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,所以跳跃的距离会显得短一些。
而且有一个严重的问题就是:蹲下,踢腿等动作不能做了。
思考:
虽然实现了斜跳,但是整个过程很不自然,数据之间的转换不够合理。需要继续改进。