Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • CreatiCode
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo

CreatiCode Scratch Forum

  1. CreatiCode Forum
  2. 知识库
  3. 三维积木
  4. 父母-孩子关系

父母-孩子关系

Scheduled Pinned Locked Moved 三维积木
1 Posts 1 Posters 803 Views
  • 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.
  • C Offline
    C Offline
    CreatiCode TA 2
    wrote on last edited by admin
    #1

     

    预备知识

    • 名称和角色物体

     

    介绍

    很多时候,我们需要让好几个物体一起移动。举个例子,当一个物体移动或旋转时,我们需要另一个物体跟着它一起移动、旋转或者改变比例。这被称之为“父子关系”,因为这和父母带孩子过马路的方式非常相似————父母行走,而小孩跟随父母。

     
    https://cdncreaticodecom.b-cdn.net/awsuploads/947564/images/8971646/pasted-from-clipboard.png" width="200" style="filter: drop-shadow(0.35rem 0.35rem 0.4rem rgba(0, 0, 0, 0.5));">
     

     

    设置父节点的编程积木

    你可以利用这个编程积木来把现有角色物体(活跃的角色物体)中的任何物体设置成其他物体的“父节点”。

     
    https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/cfeb9270-8d9d-4cb7-a96a-67312d2a89a8.png" width="850" style="">
     

    • 父节点物体名称: 会成为父节点的物体名称。

    • 父节点角色: 成为父节点物体的物体属于的角色。换句话说,创建物体的角色将会被设置成父节点。需要注意的时这个选项允许你让一个由不同角色创建的物体成为现有角色的物体的父节点。

    需要注意的是每个物体可以有很多孩子,但是只能有一个父母。假设物体A已经有一个父节点物体B,然后你把物体C设置成物体A的父节点,那么A就不再是B的小孩。

     

    演示:一起移动

    在这个程序例子里,我们添加一辆卡车,并在卡车上添加一个桌子。这两个物体被分别命名为“卡车”和“桌子”。当我们移动卡车时,桌子不会跟着它移动。

    要纠正这个错误,我们需要在“添加模型”编程积木后运行“设置父节点”编程积木,以便桌子会跟随卡车的移动:

     
    https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/aa795806-b7b1-43e7-bb55-b01f70fa609d.gif" width="1000" style="border-radius: 5px; border: 1px solid #29622d;">
     

     

    演示:一起旋转

    在这个例子程序中,我们添加一个飞碟并在它的上方添加一个猫头鹰。这两个物体被分别命名为"飞碟”和“猫头鹰”。当我们旋转飞碟时,猫头鹰保留在它原本的位置。

    要让两个物体一起旋转,我们只需要把飞碟设置成猫头鹰的父节点。需要注意的是,猫头鹰不是围绕着它自己的身体中心旋转,而是围绕着父节点的身体中心旋转。你可以把它们想象成”身体“(飞碟)以及”手臂“(猫头鹰):当身体旋转时,手臂会绕着身体旋转。

     
    https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/25e9281e-d8e9-4b01-84e7-df7521d4b805.gif" width="1000" style="border-radius: 5px; border: 1px solid #29622d;">
     

     

    演示:更新位置和比例

    在这个程序例子里,父节点物体处于X=200的位置,而他的比例在Y的方向被更新。孩子物体处于X=0,Z=200的位置。当我们设置它的父节点物体时,我们也选择更新孩子物体的位置和比例,所以他被移到了相对于父节点物体来说,X = 0,Z = 200的位置,而孩子物体的比例也会继承它父母物体的比例。

     
    https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/acd6d3e6-0d70-4514-aa78-493322e793d3.gif" width="1000" style="border-radius: 5px; border: 1px solid #29622d;">
     

    移除一个父节点

    要结束父子关系,我们可以使用这个编程积木:

     
    https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/9a8f1909-0f35-4218-befe-7d1575814090.png" width="150" style="filter: drop-shadow(0.35rem 0.35rem 0.4rem rgba(0, 0, 0, 0.5));">
     

    演示

    就像下列动图展示的那样,当我们选择猫头鹰物体并把它从父节点(飞碟)当中解除时,猫头鹰就再也不会跟着飞碟旋转了:

     
    https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/d1405e9c-508e-4dfb-80bd-2302a93d6145.gif" width="1000" style="filter: drop-shadow(0.35rem 0.35rem 0.4rem rgba(0, 0, 0, 0.5));">)
     

     

    转换器

    有的时候,我们需要添加一个新物体并把它当成另一个物体的父母。虽然我们可以添加一个几乎看不见的盒子,但我们有个更好的选择是添加“转换器”。这些转换器会“更便宜”,因为他们是看不见的,所以我们不需要在画面上把他们画出来。转换器也不会携带任何关于自身形状或者颜色的资料。

    你可以用下列编程积木来添加转换器并给他一个名字:

     
    https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/dd1a9bbb-2899-4fbc-93c3-1a5eca395b7e.png" width="250" style="filter: drop-shadow(0.35rem 0.35rem 0.4rem rgba(0, 0, 0, 0.5));">

     

    演示

    在这个例子里,我们有一个剑物体。当我们让它围绕着Y轴旋转时,他会围绕着自身的最低点旋转。假设我们要剑围绕着另一点旋转,比如它的中心点(Z = 50),我们可以在中心点添加一个名为“Z”的转换器并把它命名为“p”。假设我们现在旋转转换器物体,剑也会围绕着它旋转。

     
    https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/29e90e05-c506-4776-b26a-85bfd814eab1.gif" width="1000" style="border-radius: 5px; border: 1px solid #29622d;">

     

    祖父节点

    **父节点关系可以被“链接”。**假设物体A是物体B的父节点,而物体B是物体C的父节点。那么,物体A就是物体C的祖父节点。物体C的移动会被物体C影响,而这两个物体的移动都会被物体A影响。

     

    演示

    在这个例子里,我们添加三个球体来代表太阳、地球和月球。我们把太阳设置成地球的父节点,而地球将会是月球的父节点。当我们旋转太阳时,地球和月球都会围绕着太阳旋转。我们可以做得更多一些,让地球绕着自己自转,然后月球会围绕着地球旋转。

     
    https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/2a29006b-8022-44df-a585-714063188434.gif" width="1000" style="filter: drop-shadow(0.35rem 0.35rem 0.4rem rgba(0, 0, 0, 0.5));">
     

    你可以打开这个项目试一试:

    https://play.creaticode.cn/projects/1ed5e0f8bcae20f94b938f11

    1 Reply Last reply
    0
    • CreatiCodeI CreatiCode pinned this topic on

    Hello! It looks like you're interested in this conversation, but you don't have an account yet.

    Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

    With your input, this post could be even better 💗

    Register Login
    Reply
    • Reply as topic
    Log in to reply
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes


    • Login

    • Don't have an account? Register

    • Login or register to search.
    • First post
      Last post
    0
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • CreatiCode