scratch案例——台球

程序的难点是,当白球击打到蓝球的时候,这两个球的运动轨迹会发生什么变化。如果想让运动轨迹符合实际,那么就要用点物理的知识了。如果白球正好击打到蓝球的球心,那么白球的动能应该全部传递给蓝球,而白球就要静止下来。如果白球没有打到球心,那么蓝色的球和白色的球会分别弹向不同的方向,并且各自的速度也不一样。那怎么计算呢?
scratch案例——台球_第1张图片
看一下这个图,当下面的球撞到上面的球的时候,会有这四个关系:

上面的球会往v2的方向走,下面的球会往v1的方向走;

v1和v2的角度是垂直的;

v2的方向是沿着两个球心的连线;

v1²+v2²=v²

有了这个撞击的规则,大家知道两个球碰撞的程序怎么设计了吗?
注意,这里只是一个球撞击另一个静止的球的做法,所以我们今天做的程序只是设计了白球去撞击静止的蓝球,如果撞击之后两个球都在运动中发生的碰撞,CC哥今天没做。大家也可以看看如果两个球同在运动中的时候,如果发生碰撞,路径和速度的算法应该如何。

程序讲解

首先增加了一个角色,就是蓝球,ball2。

这个蓝球的程序CC哥就是用角色的运动来处理了,而不是再象白球那样用画笔来画了。也是为了处理简便。白球的程序基本没变,大家可以参考上一讲。
scratch案例——台球_第2张图片
scratch案例——台球_第3张图片
蓝球碰到边框的程序
scratch案例——台球_第4张图片
这个部分跟上一个白球的碰撞检测差不多,这里就不重复讲了。碰到边上之后的移动speed2步的命令,其实是让蓝球离开四个台边。

球进洞的程序:

球是要打到洞里的,那么我们看看蓝球进洞是什么程序控制。
scratch案例——台球_第5张图片
这个进洞检测跟白球的进洞检测是一样的。进洞的效果就是消失后在球台的正中间再次出现。这里就不讲了。

今天的讲解没有做太多内容,重点就是两个球碰撞之后的速度和方向的计算方法。大家掌握了这个技巧,以后做碰撞的游戏肯定会生动很多。
转自:https://www.china-scratch.com/news/4408

你可能感兴趣的:(scratch)