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. 三维 - 带孔的立方体(难度:2级)

三维 - 带孔的立方体(难度:2级)

Scheduled Pinned Locked Moved 小教程
1 Posts 1 Posters 941 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
    creaticodeteacher2-mail
    wrote on last edited by admin
    #1

     

    先修科目

    • 三维 - 魔方(难度:2级)

     

    用到的相关知识

    • 创建三维场景
    • 使用变量
    • 使用变量循环
    • 使用盒子
    • 父子对象关系
    • 物体命名
    • 三维物体的速度
    • 将物体导出为GLB文件
    • 社区模型

     
     

    介绍

    在这篇教程中,我们将制作一个带孔的立方体,并且我们可以利用变量控制孔的位置。预览如下:

     

    第1步 - 改编并检查

    请在浏览器新标签打开下方项目,然后改编。

    https://play.creaticode.com/projects/0068cbafa5ad0c465f966315

    这个项目基于教程《三维 - 魔方(难度:2级)》,这个教程制作了一个包含5层、5行、5列的盒子阵列。

    由于所有盒子是一样的,所以看起来就是一个大的立方体。另外,自制积木“添加盒子“设置为”运行时不刷新屏幕“,让程序运行更快。

     

    第2步 - 在中间留一个缝隙

    现在我们开始在立方体中开一些孔。关键思路就是某些条件为真时不添加盒子。

    首先,添加一个积木“如果<>那么…否则…”,把条件设置为“x = 0”。然后就可以把添加盒子的积木放到“否则”分支里面。这样的话,每当变量x为0,我们就不添加盒子,就会在立方体中间留出一个缝隙。

     

    第3步 - 留一个洞

    我们改进一下条件,现在我们留一个洞,而不是一个缝隙。

    具体方法就是,检查x和y是否同时为0,只有满足此条件时,我们才不添加盒子。结果,在这个新的程序中有5个盒子略过没有加进去。

     

    第4步 - 第二个洞

    接下来,我们再添加一个洞,从前到后穿过立方体。这次我们要用一个新的条件:变量x和z都为0。只需要再添加一个积木“如果<>那么…否则…”,如果两个条件有一个成立就不添加盒子。

     

    第5步 - 第三个洞

    现在请大家尝试添加第三个洞,从左到右穿过立方体。

    包含3个“如果<>那么…否则…”分支的完整程序如下:

     

    第6步 - 使内部空间更大

    假如我们要在立方体内部挖一个更大的空间,可以把条件设置为:如果三个变量x、y、z全部小于等于100,我们就不添加盒子。提示,积木“绝对值( )”用来取绝对值,那么,如果x为-100,“绝对值(-100)”就为100.

    结果如下:

     

    第7步 - 添加一个转换器父节点

    到目前为止,所有盒子都是相互独立的。为了把所有盒子变为一个对象,我们要将一个别的对象设置为所有盒子的父节点。

    做法就是,首先添加一个新的“转换器”对象,命名为“方块”。这个对象不可见,但我们仍然可以用来控制它的子对象。

    然后,我们要把“方块”设置为所有盒子的父节点:

     

    第8步 - 使立方体旋转

    尽管我们得到的立方体和前面的一样,但现在我们能够利用父节点把所有盒子当做一个对象来控制。

    例如,我们使整个立方体绕z轴旋转。其做法为,首先要根据名称选取转换器对象“方块”。这样的话,下面的所有积木都会应用到这个父对象。然后,我们把父节点的“z轴旋转”速度设置为100,所有子对象盒子就会随父对象一起旋转。

     

    第9步 - 把这个立方体导出为GLB文件。

    如果你想让别人使用你刚刚制作的立方体,就可以导出为GLB文件。GLB格式是一种三维模型格式,就好比JPEG是二维图像格式,很多三维软件接受GLB格式文件。

    若要导出物体对象,只需要使用如下积木,并指定所要导出的对象名称“方块”。所有子对象都会被导出,这样就确保整个立方体导出为一个模型文件。

     

    第10步 - 上传并分享自己的GLB模型文件

    你可以在创益编程社区分享自己做的GLB模型文件。这种模型被称为”社区模型“。

    只需进入“我的东西”页面,点击“三维模型”,然后根据引导上传GLB文件。上传以后,所有用户都能把你的模型加载到他们的场景中。

     

    创意扩展

    这个项目可以改编成多种样式。下面是一些创意想法:

    1. 不同的条件:你可以尝试其他条件,如“x + y = 100”、“x * y = 10000”诸如此类。

    2. 其他形状:把盒子换成球体或柱体,作为堆叠积木。

    1 Reply Last reply
    0

    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