Navigation

    CreatiCode Scratch Forum

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

    2 个物理物体之间的铰链约束

    三维积木
    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

      介绍

      铰链约束通过一个公共的旋转轴连接 2 个物理对象。

      这个约束常常被用于模拟墙与门之间的连接,或者车身与车轮之间的连接。通常,这两个物体中的一个是静止的,或质量比另外一个物体大得多,因此另一个物体将围绕铰链轴旋转。两个物体之间不会有其他相对运动或旋转。

      be39b883-64aa-4147-9375-514af062cca6-image.png

       
       

      添加铰链约束

      你可以使用以下积木添加铰链约束。

      911e191d-3246-4a46-ba5e-24f6b7246e9f-image.png

      它接受这些参数:

      • 第一个物体的名称和角色:你可以使用物体的名称和创建该物体的角色来指定第一个物体。一般来说这个物体是不动的那个物体。

      • 铰链对于第一个物体的相对位置:这是铰链相对于第一个物体的相对位置。通常,铰链是在物体的外部,因此铰链的中心和第一个物体的中心不是同一个位置。例如,如果第一个物体位于 x = 100 的绝对位置,铰链的相对 x 位置为 60,则铰链将位于 x = 160 的绝对位置。

      • 铰链对于第一个物体的相对方向:这些参数控制铰链的方向。如果 x 为 0,y 为 0,z 为 1,则铰链轴的方向将与 Z 轴的方向相同。

      • 第二个对象的名称和精灵:您可以使用自己的名称和创建此对象的精灵来指定第二个对象。

      • 铰链对于第二个物体的相对位置:这是铰链相对于第二个物体的相对位置。例如,假设第一个物体是静止的,那么它将决定铰链的位置,而铰链的位置将决定第二个物体的位置。如果铰链位于 x = 160 的绝对位置,并且它与第二个物体的相对 x 位置为 -60,则第二个物体将位于 x = 220 的绝对位置。

      • 铰链对于第二个物体的相对方向:这些参数控制铰链相对于第二个物体的对齐的轴。如果这个方向与第一个物体的相对方向不一样,那么第二个物体将会被旋转。

      • 名字:此铰链约束的名称。稍后你可以使用它的名字来引用这个约束。

       
       

      设置铰链约束的旋转速度

      铰链约束下两个物体之间的相对角度不会自动改变,除非我们对其中一个或两个物体施加某种力。

      但是,你可以给铰链约束中添加一个“电机”,以便在 2 个物体之间产生恒定的相对旋转。这可用于模拟轮子或机器人手臂关节的旋转。

      你可以使用以下积木来设置旋转速度:

      e5efa936-3493-42a1-a7dc-45a6a99907ed-image.png

       

      • 速度:速度是铰链每秒旋转的度数。
      • 名称:你要更改的铰链约束的名称。

       
       

      为铰链约束设置限制

      你可以使用以下积木对铰链约束设置一些限制:

      db631011-29d6-4751-95d9-00c0e0690393-image.png

      • 名称:你要更改的约束的名称

      • 最小和最大角度:两个物体之间的相对角度的下限和上限。

      • 柔度:此参数目前未激活。它保留用于将来的更新。

      • 偏置因子:此参数控制物体在达到角度极限时是否会恢复到最大角度和最小角度的中心位置。它可以是 0 到 1 之间的任何数字。在取值为 0 时,当角度达到上限或下限时,物体将保持这个相对角度不变。在取值为 1 时,物体将全程恢复到中心位置。

      • 松弛度:当物体恢复它们的相对角度时(当偏置因子不为 0 时),恢复发生的速度有多快(用多大的力)。

       
       

      示例 1 - 墙和门

      下面的程序添加了第一个名为“墙”的盒子,它是静态的。然后添加了第二个名为“门”的盒子,它不是静态的。这 2 个物体被左右放置,并在它们之间添加了铰链约束。

      我们对这个约束施加了限制,使门最多只能旋转 45 度。最后,当我们在门上施加一个脉冲力时,它会旋转到这个最大角度。由于我们已将“偏置因子”设置为 0,门将保持在该角度,而不是恢复原位。

      88cb02f8-24a6-4bb2-a5da-c5b5a17295bb-image.png

       
      这是结果:

      door.gif

       
      这里是共享的程序:
      https://play.creaticode.com/projects/cc7f9d2301ba349eee51fa31

       
       

      示例 2 - 会跳的小狗

      对于这个例子,我们创建了一只狗,它的身体是一个盒子,头部是一个球体,腿是 4 个圆柱体。头部使用固定约束连接到身体的,而4条腿是使用铰链约束连接到身体上的,因此我们可以通过设置4条铰链约束的旋转速度来使4条腿摆动。我们还在铰链约束上设置了一些限制,这样腿就不会摆动到错误的位置。

       

      ff5d1dac-4525-4794-8ca6-24c89b115e06-image.png

       

      e417c40c-5678-4216-864d-d9f199f2d94d-image.png

       

      cbc46fa0-497f-4b6b-84bb-57901f6c6cb8-image.png

       

      b2d69038-f2db-4b1d-84f1-52f5392188b1-image.png

       
      这是运行结果:

      狗.gif

       
      这是共享的项目:

      https://play.creaticode.com/projects/1939f1f5ed62a5f6b2530cfc

      1 Reply Last reply Reply Quote 0
      • Pinned by  info-creaticode info-creaticode 
      • First post
        Last post