Navigation

    CreatiCode Scratch Forum

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

    三维物理 - 汽车冲撞盒子墙(难度:3级)

    小教程
    1
    1
    175
    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.
    • C
      creaticodeteacher2-mail last edited by admin

      介绍

      在这篇教程中,大家将制作一个简单的物理仿真游戏。玩家将驾驶汽车冲撞一摞盒子,能撞飞越多盒子得分越高。

       
       

      第1步 - 新建一个带物理引擎的空场景

      首先,在创益编程游乐场新建一个项目,删除带小狗的角色1,然后把“空的1”改名为“主角”。

      在“主角”角色中,添加以下积木。将创建一个空的三维场景,显示三维坐标轴,并启用物理引擎,重力为-1000.
      1.png

       
      得到如下结果:

       
       

      第2步 - 添加一个广阔的地面

      接下来,利用平面添加一个广阔的地面,宽4000,长15000,然后为地面添加网格材料,大家可以用自己喜欢的颜色:
      2.png

       
      制作的地面如下所示:

       
       

      第3步 - 为地面设置物理实体

      地面不能动,所以质量应当设置为0。其恢复系数和摩擦系数对于这个游戏来说并不重要。设置物理实体的积木如下:

      3.png

       
       

      第4步 - 添加一个坡道

      接下来,我们为汽车添加一个坡道,就是一个小平面,宽600,长1000。大家可以根据喜好添加网格材料。把坡道绕x轴旋转一个小角度,比如15度,然后移到前面,以便于给汽车留一些加速空间。

      4.png

       
      汽车坡道如下所示:

       
       

      第5步 - 为坡道设置物理实体

      为坡道设置与地面相同的物理实体:

      3.png

       
       

      第6步 - 广播2条消息

      到目前为止,我们已经搭建好了平台。接下来,我们就要添加靶位盒子和玩家的汽车。做法就是,在“主角”角色广播如下这2条消息:
      5.png

       
       

      第7步 - 角色“靶子”

      要添加靶位盒子,最好在一个新角色中来做。添加一个空角色并命名为“靶子”,然后在这个角色中接收“添加靶子”事件:

      6.png

       
       

      第8步 - 添加盒子墙

      为了在角色“靶子”中添加盒子墙,我们可以用2个新变量“x”和“z”,并用2个嵌套的遍历循环来控制这2个变量。盒子大小为100,第1个变量循环的x坐标从-200走到200,第2个变量循环的z坐标从50走到450。盒子的y坐标都相同,为5500。添加盒子的积木代码如下:

      7.png

       
      添加的盒子墙如下所示:

      t4.gif

       
       

      第9步 - 设置不同颜色

      为了让盒子外观各不相同,我们可以为每个盒子应用随机颜色的网格材料:

      Animation1.gif

       
      现在的盒子墙如下:

      t6.gif

       
       

      第10步 - 为盒子墙设置物理实体

      最后,我们需要为每个盒子设置物理实体,只有这样才能让汽车与盒子相撞。设置一个较大的摩擦系数,以便于盒子不太容易滑动:

      8.png

       
       

      第11步 - 角色“汽车”

      现在我们准备添加汽车了。和之前一样,我们还是在一个新角色中操作,新角色命名为“汽车”,在这个角色中处理消息“添加汽车”:
      9.png

       
       

      第12步 - 添加汽车模型

      首先,我们添加“赛车”模型,高度为50。

      0e648f1b-7d62-494e-a38f-85d8054fa86f-image.png

       
      添加的“赛车”模型如下:

      t7.gif

       
       

      第13步 - 启用汽车仿真模拟

      接下来就是本教程最重要的一步,用如下积木[启用汽车模拟]:(/topic/750/car-with-physics-simulation):
      11.png

       
      汽车的质量是单个盒子的10倍。较大的恢复系数将会使汽车撞到盒子后将盒子飞弹出去。轮胎摩擦系数10%会使轮胎有点打滑,这样的话,当前轮转向时,车身就会有点漂移。

       
       

      第14步 - 添加跟踪摄像机

      现在我们添加一个跟踪摄像机,当汽车转向时会跟随汽车。“主方向”设置为“自由”,以便于玩家能够随时缩放和转动摄像头。
      12.png

       
      跟踪摄像机的新视角如下所示:

       
       

      第15步 - “D”、“A”键控制方向

      现在要让玩家能够用键盘驾驶汽车。我们用一个无限循环来检查按键。

      首先,我们处理前轮的转向角度。当按下“D”健,我们让车轮右转15度;当按下“A”健,左转15度;如果没有按下按键,车轮笔直向前。
      13.png

       
      从车底可以清晰看到前轮的动作:

       
       

      第16步 - 按“W”键向前行驶

      接下来我们要处理发动机动力和刹车系数,这两项独立于转向角度。

      当按下“W”键,我们设置一个较大的正数动力,设置刹车系数为0。
      14.png

       
       

      第17步 - 按“S”键向后行驶

      同理,如果按下“S”键,我们就要把发动机动力设置成负数,从而使汽车倒退:
      15.png

       
       

      第18步 - 按“空格”键刹车

      当按下“空格”键,我们就要把发动机动力设置为0,刹车系数设为10%。这样的话,汽车就会重复不断减速10%。如果没有按下任何按键,我们把发动机动力和刹车系数都设为0。
      16.png

       
       

      第19步 - 星空背景

      最后,为了让场景更美观,我们可以在“主角”角色中设置一个星空背景,还要隐藏三维坐标系:
      17.png

       
      游戏最终演示效果如下:

       
       

      创意扩展

      在这篇教程的基础上,大家可以改编成更有趣的游戏,以下是一些思路建议:

      • 不同的靶子:大家可以更改盒子墙的位置、形状和数量,盒子不必都叠在一起。
      • 不同的坡道:大家可以设计不同的坡道,还可以提供多个坡道。
      • 不同的目标:玩家把所有盒子都撞出平台就算完成游戏。
      1 Reply Last reply Reply Quote 0
      • First post
        Last post