消消乐P5 非线性移动
消消乐 第五集
本集我们实现了非线性移动的功能,完善了我们的移动动画。
什么是非线性移动?
线性移动的特点是在某个方向上运动速度保持不变,反之,非线性移动就是速度不是固定的。
我们经常使用的移到,包括重复执行增加坐标,都是线性移动。

而非线性移动,我们可以用不同的速度来模拟,这里我直接使用后面我们要用到的方法。我们新建一个私有变量x速度,是我们每个时间段内(一次循环)要移动的距离。这个距离由角色和目标的距离决定。200是我们终点的坐标位置,后面的除数是控制速度的数,这个数越大移动就会越慢。

对比我们可以看到,对比速度不变的线性移动,非线性移动前半段的速度明显更快,但是速度随着接近终点而降低。
实现非线性移动动画
基本的思路我们已经完成了。如何在我们的游戏中实现非线性移动?
回到我们方块的代码中,由于我们的移动不只是在x轴方向, 所以我们要为两个方向分别设置x距离和y距离私有变量。在游戏开始的时候初始化为0。在克隆体开始时中的重复执行,把我们原来的移动代码替换掉。可以看到我们原来移动的终点坐标,这个列表中的值就可以替换上面的200作为我们终点的目标坐标。y轴上的移动也是同理。式子里减法后面的x坐标和y坐标也记得修改。

不过这个效果和我们视频开始的效果有些差距。我们用一个式子做一个类似“阻力”的效果,完成一个回拉的动画。

现在我们拖动的时候有了滑行的动画效果,怎么让我们开局的时候就有一个动画效果呢?我们可以让卡片开局的时候生成到列下方的位置,让卡片有一个滑行到目标的效果。

总结
本集课程我们完成了非线性移动的动画效果,让我们的游戏动画更加美观。在实现动画逻辑的过程中我们用到了很多数学和物理的知识,让我们再次认识到了数学和物理在游戏制作方面的重要性。对这几个方面大家需要在课堂上认真学习,把学到的知识结合到游戏制作中。

浙公网安备 33010602011771号