二维物理 - 模拟水滴(难度:3)
-
介绍
在本教程中,你将使用二维物理引擎构建一个有趣的动画:模拟桶中的水滴。
第 1 步 - 初始化二维物理世界
请在创益编程平台新建一个项目,删除小狗角色,然后在空角色中添加以下积木,用来初始化二维物理世界。
这个物理世界我们是看不到的。它由二维物理引擎管理。如果没有这一步,我们就不能使用“二维物理”类别中的任何其他积木。在这个程序中,我们将 Y 方向的重力加速度设置为 -100。由于数字是负数,这意味着物体将沿 Y 方向下落。
第 2 步 - 添加小球造型
我们将使用小球来代表水滴。请切换到造型页,并添加“球-b”这个造型:
我们还需要把角色变小:请把它的比例设置为 30% :
第 3 步 - 让小球跟随鼠标
接下来,我们在按下鼠标时,让球移动到鼠标指针位置的正上方。我们可以使用一个重复循环来检查鼠标是否被按下。如果是被按下,我们就将小球角色移动到鼠标的 X 位置,和 10 加上鼠标的 Y 位置。注意,如果我们直接使用鼠标的 Y 位置(如果不加10),小球就会正好位于鼠标指针下方,这会将它切换到拖动模式,而我们并不希望进入拖动模式。
每当你按下并拖动鼠标按钮时,小球应该随着移东到鼠标上方:
第 4 步 - 创建克隆
我们将使用小球角色的克隆来代表小水滴。我们可以在每次移动小球后都创建一个新的克隆:
现在我们就可以用小球的克隆“绘制”一串“脚印”了:
第 5 步 - 为每个克隆体添加物理实体
现在我们要将这些克隆交给物理引擎管理。它将帮助我们使小球角色表现得像真正的球。每当创建一个新的克隆时,我们将它转换为圆形物理物体:
现在我们的克隆就“变活了”,因为物理引擎会让它们互相碰撞,并随重力下落。
第 6 步 - 隐藏原始角色
由于我们只使用这个小球角色的克隆来表示水滴,所以原始角色就尴尬的留在舞台上的一动不动:
我们可以使用“隐藏”积木来隐藏原始角色,然后在创建克隆后“显示”它们:
第 7 步 - 绘制水桶
接下来,让我们创建一个桶来装载这些“水滴”。创建一个名为“水桶”的新的角色,并使用 3 个长方形绘制一个类似水桶的造型,如下所示:
请注意,最后你需要选择所有的长方形,并将它们整体的中心与画布的中心对齐。
第 8 步 - 发送消息创建水桶
为了启动水桶角色中的程序,我们应该从“空角色1”发送一条消息。这确保我们在物理世界被初始化后才创建水桶。
在 “空角色1” 中, 发送“添加水桶”的消息:
之后 在 “水桶” 角色中, 接收这条消息:
第 9 步 - 将水桶移动到中心
在水桶角色中,让我们首先重置这个角色的位置和方向:
第 10 步 - 向物理引擎描述水桶
接下来,我们将告诉物理引擎我们希望水桶在物理模拟中如何表现。这个水桶是一个“凹”的形状,因为它的顶部边缘向下弯曲,我们不能用一个简单的长方形盒子来代表它。因此,在物理世界中,我们需要使用一个“复合形状”来代表它:
我们把水桶设置为一个“可设速度的”对象。因为我们不需要它因为重力而下落,所以它不需要是“动态的”。但是我们又需要旋转它,所以它也不应该是“固定的”。
由于我们将“调试”参数设置为“是”,我们可以看到物理引擎创建的复合形状,它由 3 个红色盒子组成。这正是我们所需要的,因此我们可以将“调试”参数设置回“否”,以隐藏这些红色盒子。
到这里,我们的水桶就已经可以装一些“水滴”了:
第 12 步 - 使水桶旋转
最后,为了让动画更有趣,我们让水桶绕着自己旋转。
这是最终效果:
创意点子
请尝试使用在本教程中用到的知识创建一些新动画。以下是一些供你参考的创意:
-
彩球:你可以添加多个不同颜色的小球造型,并在每次创建新的克隆之前切换小球的造型。
-
不同的水桶形状:你可以为水桶角色绘制一个不同的形状。
-
使水桶左右摇摆:目前水桶只能单向的旋转。你可以试着让它左右摇摆,这样它里面的水滴就不会洒出来。
-
更新物理属性:尝试改变物理世界中的重力加速度和物体的摩擦/弹性系数。观察并解释它们所造成的变化。
-