type
status
date
slug
summary
tags
category
icon
password
在做烟花的时候发现了一个奇怪的问题,让小球做抛物线运动的时候,发现走的不是曲线而是折线,仔细研究了这个问题发现一个有意思的知识
为了方便研究我们将范围缩小到一个小球,也就是一个小球的运动情况我们了解了那么所有的小球都是克隆出来的,他们的运动情况都是一样的.
好了拿出一个小球
我们都知道如果向右做出抛物线运动需要在小球向上运动的的同时在横向上叠加一个向右的速度,并且这个速度不能是一个固定的值否则可能出现的是这个样子
现在我们将小球向上的同时又叠加了一个向右的速度,这两个方向上的速度都是10,这里有个细节就是程序上明明是坐标增加10为什么你说成速度,如果你了解速度的定义就可以知道,速度是位移与发生这段位移所用时间之比,也就是单位时间内的位移是固定的那么可以简单的认为速度是10,单位是啥不重要,根据勾股定理斜线的速度肯定大于10
这个时候明显可以看出它的轨迹是折线,我们的抛物线还没完成,设置两个变量为速度x和速度y初始值为10,用变量替换固定值10,然后减少一个速度y的变化量
好了,我们得到一个这样的代码,我们有时候看不明白是因为代码运行的速度太快了,我们只需要将代码慢下来结果就显而易见,我们在关键代码中的每一行上加上等待在运行这个代码
就可以轻松的观察到小球先执行y坐标增加也就是向上移动,再向右移动这就是它产生折线的原因,它把原有一步完成的动作分成两步完成了,那么知道原因了修改的办法也很简单就是想办法让它同时增加速度,可以用移动到x,y来替代这个积木
这是一个调试代码非常常用的方法,让代码的执行慢下来,以便我们一步步观察运行细节,接下来我们使用其他积木替代这两个分步运行的积木,使用移动到x,y这个积木,但这个积木没有自增加功能,我们需要自己补全这个功能,可以取到x坐标在原有的基础上增加速度的变化量
拓展:
- 遮罩为什么可以产生拖影效果,运用上面介绍的方法,子弹时间(变速齿轮),让代码变慢一步一步运行是不是可以推理出方法?