Navigation

    CreatiCode Scratch Forum

    • Register
    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • CreatiCode

    二维物理 - 模拟水滴(难度:3)

    小教程
    1
    1
    245
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • info-creaticode
      CreatiCode last edited by admin

      介绍

      在本教程中,你将使用二维物理引擎构建一个有趣的动画:模拟桶中的水滴。

      bu5.gif

       
       

      第 1 步 - 初始化二维物理世界

      请在创益编程平台新建一个项目,删除小狗角色,然后在空角色中添加以下积木,用来初始化二维物理世界。

      65696839-936a-476a-b3d1-47979e3b5125-image.png

       
      这个物理世界我们是看不到的。它由二维物理引擎管理。如果没有这一步,我们就不能使用“二维物理”类别中的任何其他积木。

      在这个程序中,我们将 Y 方向的重力加速度设置为 -100。由于数字是负数,这意味着物体将沿 Y 方向下落。

       
       

      第 2 步 - 添加小球造型

      我们将使用小球来代表水滴。请切换到造型页,并添加“球-b”这个造型:

      8e803f39-eeec-4713-8dcd-af5b2efdd9ef-image.png

       
      我们还需要把角色变小:请把它的比例设置为 30% :

      133c37b8-a62f-4ee6-b5e9-357fdb1bcc43-image.png

       
       

      第 3 步 - 让小球跟随鼠标

      接下来,我们在按下鼠标时,让球移动到鼠标指针位置的正上方。我们可以使用一个重复循环来检查鼠标是否被按下。如果是被按下,我们就将小球角色移动到鼠标的 X 位置,和 10 加上鼠标的 Y 位置。注意,如果我们直接使用鼠标的 Y 位置(如果不加10),小球就会正好位于鼠标指针下方,这会将它切换到拖动模式,而我们并不希望进入拖动模式。

      7bc53839-4697-4bb0-8025-2dd268fb7d5a-image.png

       
      每当你按下并拖动鼠标按钮时,小球应该随着移东到鼠标上方:

      d1.gif

       
       

      第 4 步 - 创建克隆

      我们将使用小球角色的克隆来代表小水滴。我们可以在每次移动小球后都创建一个新的克隆:

      021da26a-1bf0-45ac-8813-adf5f93f2cfc-image.png

       
      现在我们就可以用小球的克隆“绘制”一串“脚印”了:

      d3.gif

       
       

      第 5 步 - 为每个克隆体添加物理实体

      现在我们要将这些克隆交给物理引擎管理。它将帮助我们使小球角色表现得像真正的球。每当创建一个新的克隆时,我们将它转换为圆形物理物体:

      6353e1c5-9ee2-43b9-9416-894c0339922b-image.png

       
      现在我们的克隆就“变活了”,因为物理引擎会让它们互相碰撞,并随重力下落。

      d4.gif

       
       

      第 6 步 - 隐藏原始角色

      由于我们只使用这个小球角色的克隆来表示水滴,所以原始角色就尴尬的留在舞台上的一动不动:

      a42708ad-a12f-4f80-b18a-55c267746d69-image.png

       
      我们可以使用“隐藏”积木来隐藏原始角色,然后在创建克隆后“显示”它们:

      5ee68a02-aec2-4e06-8bf0-c416224688fe-image.png

       
       

      第 7 步 - 绘制水桶

      接下来,让我们创建一个桶来装载这些“水滴”。创建一个名为“水桶”的新的角色,并使用 3 个长方形绘制一个类似水桶的造型,如下所示:

      bu.gif

       
      请注意,最后你需要选择所有的长方形,并将它们整体的中心与画布的中心对齐。

       
       

      第 8 步 - 发送消息创建水桶

      为了启动水桶角色中的程序,我们应该从“空角色1”发送一条消息。这确保我们在物理世界被初始化后才创建水桶。

      在 “空角色1” 中, 发送“添加水桶”的消息:

      3322e5c8-4905-4591-ab6f-771c261d72fa-image.png

       
      之后 在 “水桶” 角色中, 接收这条消息:

      5dc8978b-b915-465e-88c6-082d6451bff9-image.png

       
       

      第 9 步 - 将水桶移动到中心

      在水桶角色中,让我们首先重置这个角色的位置和方向:

      cd82432f-1630-46bc-b74a-77903b5fd22f-image.png

       
       

      第 10 步 - 向物理引擎描述水桶

      接下来,我们将告诉物理引擎我们希望水桶在物理模拟中如何表现。这个水桶是一个“凹”的形状,因为它的顶部边缘向下弯曲,我们不能用一个简单的长方形盒子来代表它。因此,在物理世界中,我们需要使用一个“复合形状”来代表它:

      ea881fac-f125-4428-9f0e-f43e58509d9c-image.png

       

      我们把水桶设置为一个“可设速度的”对象。因为我们不需要它因为重力而下落,所以它不需要是“动态的”。但是我们又需要旋转它,所以它也不应该是“固定的”。

      由于我们将“调试”参数设置为“是”,我们可以看到物理引擎创建的复合形状,它由 3 个红色盒子组成。这正是我们所需要的,因此我们可以将“调试”参数设置回“否”,以隐藏这些红色盒子。

      8c500417-5c98-4a49-8aa7-c97586c5bad9-image.png

       
      到这里,我们的水桶就已经可以装一些“水滴”了:

      bu1.gif

       
       

      第 12 步 - 使水桶旋转

      最后,为了让动画更有趣,我们让水桶绕着自己旋转。

      33bcac4a-781a-4595-ab6f-1866d1843dab-image.png

       
      这是最终效果:

      bu5.gif

       
       

      创意点子

      请尝试使用在本教程中用到的知识创建一些新动画。以下是一些供你参考的创意:

      • 彩球:你可以添加多个不同颜色的小球造型,并在​​每次创建新的克隆之前切换小球的造型。

      • 不同的水桶形状:你可以为水桶角色绘制一个不同的形状。

      • 使水桶左右摇摆:目前水桶只能单向的旋转。你可以试着让它左右摇摆,这样它里面的水滴就不会洒出来。

      • 更新物理属性:尝试改变物理世界中的重力加速度和物体的摩擦/弹性系数。观察并解释它们所造成的变化。

      1 Reply Last reply Reply Quote 0
      • First post
        Last post