主角跳上方块2以后,如果没有跳到正中间,主角返回时仍然是返回到中间位置 这不仅不合理,主角和方块2返回时也不同步,效果不好。 我们需要让主角和方块2跳跃后按原位置返回, 效果如图:注意的是,主角跳到方块2以后返回的位置不再是中心点,而是它实际跳到的位置 方块2代码: 主角代码: 仔细调试程序,会发现有时主角明明跳到了方块2上,但还是显示游戏失败 我们把变量显示出来观察一下会发现"主角应跳距离"和"主角跳的总距离的差"已经超过了33,所以程序提示失败了。 观察下图,就会发现,实际上当主角按照原位置返回后,应跳距离已经发生了变化 所以主角在后面的应跳距离的具体计算方法为: 用链表记录方块2和主角的坐标 主角在初始化时和收到开始消息时都更新坐标, 方块2代码 计算应跳距离 注意:实际上,可以直接用"侦测"中的 模块来实现 但这里因为要让同学熟练勾股定理,所以不用上述方法。 调试程序,修正错误 发现目前有以下问题:主角应跳距离非常小 因为其实角色的中心并不是我们期望的中心点,角色的中心点是整个图片的中心点,也就是包括影子占的位置 下图能明显看出应跳距离变短了。 解决方法就是将方块的和主角的中心点放到我们期望的位置 如何将方块的中心放到我们期望的中心位置? 方块2的中心点调整 1、将背景换成网格 2、将方块2坐标改为0,0 3、在造型中将中心点尽量放到指定位置 方块1的中心点调整:复制方块2的造型到方块1中,删除方块1原来的图形 同样处理主角的中心点位置 注意:为了不影响主角的横坐标(以后有用处),可以采取以下办法 1、先在中心点位置做一个标记 2、用光标键一点一点向下移动(不能用鼠标,用鼠标就会改变它在x方向的坐标) 当按下空格时,蓄力的造型高度不符,重新制作蓄力造型即可. 调整其它一些参数,调试程序