<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[二维物理 - 模拟水滴（难度：3）]]></title><description><![CDATA[<h2><a class="anchor-offset" name="介绍"></a>介绍</h2>
<p dir="auto">在本教程中，你将使用二维物理引擎构建一个有趣的动画：模拟桶中的水滴。</p>
<p dir="auto"><img src="https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/b8ca45b4-7ba0-4995-99c8-64a185221fc9.gif" alt="bu5.gif" class=" img-responsive img-markdown" width="489" height="404" /></p>
<p dir="auto"> <br />
 </p>
<h2><a class="anchor-offset" name="第-1-步-初始化二维物理世界"></a>第 1 步 - 初始化二维物理世界</h2>
<p dir="auto">请在创益编程平台新建一个项目，删除小狗角色，然后在空角色中添加以下积木，用来初始化二维物理世界。</p>
<p dir="auto"><img src="https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/ce516acc-ddbc-4f27-ae91-0e7edd690c85.png" alt="65696839-936a-476a-b3d1-47979e3b5125-image.png" class=" img-responsive img-markdown" width="505" height="155" /></p>
<p dir="auto"> <br />
这个物理世界我们是看不到的。它由二维物理引擎管理。如果没有这一步，我们就不能使用“二维物理”类别中的任何其他积木。</p>
<p dir="auto">在这个程序中，我们将 Y 方向的重力加速度设置为 -100。由于数字是负数，这意味着物体将沿 Y 方向下落。</p>
<p dir="auto"> <br />
 </p>
<h2><a class="anchor-offset" name="第-2-步-添加小球造型"></a>第 2 步 - 添加小球造型</h2>
<p dir="auto">我们将使用小球来代表水滴。请切换到造型页，并添加“球-b”这个造型：</p>
<p dir="auto"><img src="https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/1633de65-a89f-423f-a557-e2ed658dd6f6.png" alt="8e803f39-eeec-4713-8dcd-af5b2efdd9ef-image.png" class=" img-responsive img-markdown" width="1127" height="729" /></p>
<p dir="auto"> <br />
我们还需要把角色变小：请把它的比例设置为 30% ：</p>
<p dir="auto"><img src="https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/07348ce1-0bf6-4a1f-8326-0ae28f37218e.png" alt="133c37b8-a62f-4ee6-b5e9-357fdb1bcc43-image.png" class=" img-responsive img-markdown" width="509" height="127" /></p>
<p dir="auto"> <br />
 </p>
<h2><a class="anchor-offset" name="第-3-步-让小球跟随鼠标"></a>第 3 步 - 让小球跟随鼠标</h2>
<p dir="auto">接下来，我们在按下鼠标时，让球移动到鼠标指针位置的正上方。我们可以使用一个重复循环来检查鼠标是否被按下。如果是被按下，我们就将小球角色移动到鼠标的 X 位置，和 10 加上鼠标的 Y 位置。注意，如果我们直接使用鼠标的 Y 位置（如果不加10），小球就会正好位于鼠标指针下方，这会将它切换到拖动模式，而我们并不希望进入拖动模式。</p>
<p dir="auto"><img src="https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/a71f6bd6-56e7-4434-9afd-76ff2b6bb449.png" alt="7bc53839-4697-4bb0-8025-2dd268fb7d5a-image.png" class=" img-responsive img-markdown" width="559" height="414" /></p>
<p dir="auto"> <br />
每当你按下并拖动鼠标按钮时，小球应该随着移东到鼠标上方：</p>
<p dir="auto"><img src="https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/ea091c8a-ff48-4075-900f-eb9db2e4acb9.gif" alt="d1.gif" class=" img-responsive img-markdown" width="484" height="406" /></p>
<p dir="auto"> <br />
 </p>
<h2><a class="anchor-offset" name="第-4-步-创建克隆"></a>第 4 步 - 创建克隆</h2>
<p dir="auto">我们将使用小球角色的克隆来代表小水滴。我们可以在每次移动小球后都创建一个新的克隆：</p>
<p dir="auto"><img src="https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/5f7bcc1e-2235-4f75-b6b5-0593bb17e9fb.png" alt="021da26a-1bf0-45ac-8813-adf5f93f2cfc-image.png" class=" img-responsive img-markdown" width="564" height="475" /></p>
<p dir="auto"> <br />
现在我们就可以用小球的克隆“绘制”一串“脚印”了：</p>
<p dir="auto"><img src="https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/b706356f-8b0d-4610-afd7-10303c1da234.gif" alt="d3.gif" class=" img-responsive img-markdown" width="484" height="406" /></p>
<p dir="auto"> <br />
 </p>
<h2><a class="anchor-offset" name="第-5-步-为每个克隆体添加物理实体"></a>第 5 步 - 为每个克隆体添加物理实体</h2>
<p dir="auto">现在我们要将这些克隆交给物理引擎管理。它将帮助我们使小球角色表现得像真正的球。每当创建一个新的克隆时，我们将它转换为圆形物理物体：</p>
<p dir="auto"><img src="https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/c1ded281-45ec-4920-b425-507fa61abf6b.png" alt="6353e1c5-9ee2-43b9-9416-894c0339922b-image.png" class=" img-responsive img-markdown" width="682" height="639" /></p>
<p dir="auto"> <br />
现在我们的克隆就“变活了”，因为物理引擎会让它们互相碰撞，并随重力下落。</p>
<p dir="auto"><img src="https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/a04cb5ee-3a51-4515-81e5-3e0e003f3707.gif" alt="d4.gif" class=" img-responsive img-markdown" width="484" height="406" /></p>
<p dir="auto"> <br />
 </p>
<h2><a class="anchor-offset" name="第-6-步-隐藏原始角色"></a>第 6 步 - 隐藏原始角色</h2>
<p dir="auto">由于我们只使用这个小球角色的克隆来表示水滴，所以原始角色就尴尬的留在舞台上的一动不动：</p>
<p dir="auto"><img src="https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/43949db2-3932-4706-8a11-7adf662e109f.png" alt="a42708ad-a12f-4f80-b18a-55c267746d69-image.png" class=" img-responsive img-markdown" width="493" height="364" /></p>
<p dir="auto"> <br />
我们可以使用“隐藏”积木来隐藏原始角色，然后在创建克隆后“显示”它们：</p>
<p dir="auto"><img src="https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/0c895de6-2a92-4608-8323-c9f49bbd9056.png" alt="5ee68a02-aec2-4e06-8bf0-c416224688fe-image.png" class=" img-responsive img-markdown" width="560" height="612" /></p>
<p dir="auto"> <br />
 </p>
<h2><a class="anchor-offset" name="第-7-步-绘制水桶"></a>第 7 步 - 绘制水桶</h2>
<p dir="auto">接下来，让我们创建一个桶来装载这些“水滴”。创建一个名为“水桶”的新的角色，并使用 3 个长方形绘制一个类似水桶的造型，如下所示：</p>
<p dir="auto"><img src="https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/93e0aa53-1f2a-4e22-a1e0-b474fe15f977.gif" alt="bu.gif" class=" img-responsive img-markdown" width="975" height="606" /></p>
<p dir="auto"> <br />
<span style="color:#ec0909">请注意，最后你需要选择所有的长方形，并将它们整体的中心与画布的中心对齐。</span></p>
<p dir="auto"> <br />
 </p>
<h2><a class="anchor-offset" name="第-8-步-发送消息创建水桶"></a>第 8 步 - 发送消息创建水桶</h2>
<p dir="auto">为了启动水桶角色中的程序，我们应该从“空角色1”发送一条消息。这确保我们在物理世界被初始化后才创建水桶。</p>
<p dir="auto"><span style="color:#e70808">在 “空角色1” 中</span>, 发送“添加水桶”的消息:</p>
<p dir="auto"><img src="https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/b227a96a-ce21-4df3-9249-44b06551618c.png" alt="3322e5c8-4905-4591-ab6f-771c261d72fa-image.png" class=" img-responsive img-markdown" width="445" height="255" /></p>
<p dir="auto"> <br />
之后 <span style="color:#f41010">在 “水桶” 角色中</span>, 接收这条消息:</p>
<p dir="auto"><img src="https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/129f8415-a4fb-4300-b5a3-54cb0c6ca4aa.png" alt="5dc8978b-b915-465e-88c6-082d6451bff9-image.png" class=" img-responsive img-markdown" width="207" height="87" /></p>
<p dir="auto"> <br />
 </p>
<h2><a class="anchor-offset" name="第-9-步-将水桶移动到中心"></a>第 9 步 - 将水桶移动到中心</h2>
<p dir="auto">在水桶角色中，让我们首先重置这个角色的位置和方向：</p>
<p dir="auto"><img src="https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/a80f7c67-9cf1-42cd-8019-17ab5c1f1047.png" alt="cd82432f-1630-46bc-b74a-77903b5fd22f-image.png" class=" img-responsive img-markdown" width="199" height="178" /></p>
<p dir="auto"> <br />
 </p>
<h2><a class="anchor-offset" name="第-10-步-向物理引擎描述水桶"></a>第 10 步 - 向物理引擎描述水桶</h2>
<p dir="auto">接下来，我们将告诉物理引擎我们希望水桶在物理模拟中如何表现。这个水桶是一个“凹”的形状，因为它的顶部边缘向下弯曲，我们不能用一个简单的长方形盒子来代表它。因此，在物理世界中，我们需要使用一个“复合形状”来代表它：</p>
<p dir="auto"><img src="https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/851732d8-baa3-4b13-a4d0-e36be5757d0a.png" alt="ea881fac-f125-4428-9f0e-f43e58509d9c-image.png" class=" img-responsive img-markdown" width="791" height="223" /></p>
<p dir="auto"> </p>
<p dir="auto">我们把水桶设置为一个“可设速度的”对象。因为我们不需要它因为重力而下落，所以它不需要是“动态的”。但是我们又需要旋转它，所以它也不应该是“固定的”。</p>
<p dir="auto">由于我们将“调试”参数设置为“是”，我们可以看到物理引擎创建的复合形状，它由 3 个红色盒子组成。这正是我们所需要的，因此我们可以将“调试”参数设置回“否”，以隐藏这些红色盒子。</p>
<p dir="auto"><img src="https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/9c8a1334-3547-411f-bd35-91e9e385b2dd.png" alt="8c500417-5c98-4a49-8aa7-c97586c5bad9-image.png" class=" img-responsive img-markdown" width="388" height="243" /></p>
<p dir="auto"> <br />
到这里，我们的水桶就已经可以装一些“水滴”了：</p>
<p dir="auto"><img src="https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/0d84f103-72a4-4263-9586-366cd89b9d2e.gif" alt="bu1.gif" class=" img-responsive img-markdown" width="489" height="404" /></p>
<p dir="auto"> <br />
 </p>
<h2><a class="anchor-offset" name="第-12-步-使水桶旋转"></a>第 12 步 - 使水桶旋转</h2>
<p dir="auto">最后，为了让动画更有趣，我们让水桶绕着自己旋转。</p>
<p dir="auto"><img src="https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/e9e7b54b-dc56-4b6b-b34a-8e07c26bedc9.png" alt="33bcac4a-781a-4595-ab6f-1866d1843dab-image.png" class=" img-responsive img-markdown" width="517" height="364" /></p>
<p dir="auto"> <br />
这是最终效果：</p>
<p dir="auto"><img src="https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/b8ca45b4-7ba0-4995-99c8-64a185221fc9.gif" alt="bu5.gif" class=" img-responsive img-markdown" width="489" height="404" /></p>
<p dir="auto"> <br />
 </p>
<h2><a class="anchor-offset" name="创意点子"></a>创意点子</h2>
<p dir="auto">请尝试使用在本教程中用到的知识创建一些新动画。以下是一些供你参考的创意：</p>
<ul>
<li>
<p dir="auto">彩球：你可以添加多个不同颜色的小球造型，并在​​每次创建新的克隆之前切换小球的造型。</p>
</li>
<li>
<p dir="auto">不同的水桶形状：你可以为水桶角色绘制一个不同的形状。</p>
</li>
<li>
<p dir="auto">使水桶左右摇摆：目前水桶只能单向的旋转。你可以试着让它左右摇摆，这样它里面的水滴就不会洒出来。</p>
</li>
<li>
<p dir="auto">更新物理属性：尝试改变物理世界中的重力加速度和物体的摩擦/弹性系数。观察并解释它们所造成的变化。</p>
</li>
</ul>
]]></description><link>https://forum.creaticode.com/topic/817/二维物理-模拟水滴-难度-3</link><generator>RSS for Node</generator><lastBuildDate>Thu, 23 Apr 2026 00:46:44 GMT</lastBuildDate><atom:link href="https://forum.creaticode.com/topic/817.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 21 Feb 2023 17:23:19 GMT</pubDate><ttl>60</ttl></channel></rss>