Navigation

    CreatiCode Scratch Forum

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

    三维物理 - 蜘蛛侠篮球(难度:5级)

    小教程
    1
    1
    218
    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

      用到的相关知识

      • 为三维场景开启物理引擎
      • 为三维物体添加物理实体

       
       

      介绍

      在这篇教程中,大家将利用物理引擎制作一个有趣的篮球游戏:

      Animation8.gif

      思路就是,用绳子将篮球与空中的挂钩相连接,篮球就会像蜘蛛侠一样摇荡。玩家可以决定什么时候添加绳子、什么时候去除绳子,从而让篮球落进篮筐里。

       
       

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

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

      在主角角色中添加如下积木,将创建一个以蓝天为背景的三维场景,显示三维坐标轴,并启用物理引擎,重力为-500。

      1.png

       
      得到如下场景:

       
       

      第2步 - 制作4个新积木

      在这个游戏中,4个主要的组件分别为篮筐、挂钩、篮球及其托盘。我们制作4个新积木来组织积木代码:

      2.png

       
       

      第3步 - 用方形管子制作篮筐

      制作篮筐的方法,我们可以使用开口的方形管子。如下三个积木将添加一个方形管子,开口大小为150×150,深度为80。为篮筐设置“方形管子”形状的物理实体,质量设为0以使其停留在空中。恢复系数设为0,这样球就不会弹出去。摩擦系数设为100,能减慢球的滚动。篮筐上绘制绿色方格和白线。

      3.png

       
      就得到如下篮筐:

      s1.gif

       
       

      第4步 - 移动并转动篮筐

      接下来,我们将篮筐沿着y轴向前移动,以便于篮球有一些摇摆的空间。另外,我们将篮筐绕x轴旋转45度,以便于使其开口朝向我们。

      4.png

       
      篮筐的新位置如下:

      s1.gif

       
       

      第5步 - 添加挂钩

      现在我们制作挂钩。我们用一个圆环来表示挂钩。对于圆环的物理实体,因为没有“环状体”,我们只需要用“球体”或“盒子”。挂钩的形状无关紧要,因为它不会与其他物体碰撞。因为圆环要保持静止,所以其质量设为0。恢复系数和摩擦系数都不重要。大家可以随意添加一种颜色的网格材料。

      5.png

       
      做出来的挂钩如下:

      s1.gif

       
       

      第6步 - 移动并转动挂钩

      为了让篮球能摇摆较长距离,挂钩需要移动到很高的位置。另外,挂钩应当竖立。用如下2个积木实现:

      6.png

       
      现在挂钩如下所示:

      s1.gif

       
       

      第7步 - 制作篮球托盘

      篮球托盘就是位于篮球下方的一个小平面。游戏开始后,篮球会在托盘上弹跳,一直到用户将篮球连接到挂钩。

      我们把托盘放到y坐标-500处,那么当篮球连接到挂钩时就会向前摇摆。为了让篮球反弹,托盘的恢复系数要设为100%。

      7.png
       
      托盘如下所示:

      s1.gif

       
       

      第8步 - 添加篮球

      最后一个组件就是篮球。注意,篮球要命名,并且需要将z偏移设为25,也就是其高度的一半。

      篮球要放在托盘的正上方。恢复系数也必须为100%,以便于从托盘上弹跳。此外,篮球的摩擦系数要设为100%,以便于落入篮筐之后快速停止滚动。

      8.png

       
      现在大家运行程序,就会得到如下弹跳的篮球:

      s1.gif

       
       

      第9步 - 添加跟踪摄像机

      因为篮球要向前摆动,所以我们要用跟踪摄像机来跟踪篮球。使摄像机拍摄篮球的角度和水平夹角为45度,以便于判断何时将篮球与挂钩连接、何时断开连接。我们还要把摄像机设置为“自由”模式,这样的话玩家就能自由调节摄像机。

      9.png

       
      现在篮球位于摄像机视野中央:

      s1.gif

       
       

      第10步 - 添加按钮控件

      为了让玩家将篮球与挂钩连接、断开连接,我们用一个按键事件或者按钮点击事件。在这个项目中,按钮是个更好的选择,因为玩家可以在手机或者平板上玩这个游戏。

      后面这个积木将在舞台右下角添加一个按钮。因为玩家第1个操作是把篮球与挂钩连接,所以我们要在按钮上显示“连接”。

      10.png

       
      按钮的默认样式如下:

      17.png

       
       

      第11步 - 修改按钮样式

      为了让按钮更美观一些,我们用下面这2个积木修改其背景和字体样式:

      11.png

       
      现在按钮如下所示:

      18.png

       
       

      第12步 - 将篮球与挂钩连接

      现在我们准备做本项目最重要的一步。为了让篮球看起来像是用绳子连接到挂钩上,我们要做两件事。

      • 第一,我们要添加一个距离约束,让篮球与挂钩保持相同距离。有了距离约束,篮球就不会下落,而是在挂钩下面来回摆动。
      • 第二,我们要在篮球与挂钩之间连一条线,用来表示“绳子”。注意,我们用的是可移动的线,绳子会随篮球移动。

      注意,当我们添加距离约束时,第1个输入框应当为“挂钩”,因为挂钩是静止的,而篮球要摇摆。“可移动的线”将随篮球移动,为了让线看起来像绳子,我们将其纹理改为“地毯”。

      12.png

       
      现在如果我们点击“连接”,就会出现一根绳子,看起来好像篮球在摇摆。

      Animation1.gif

       
       

      第13步 - 删除篮球托盘

      当篮球绕挂钩摇摆时,有时还会碰到篮球托盘:

      Animation2.gif

       
      为了解决这个问题,当我们将篮球与挂钩连接后,删除篮球托盘即可:

      13.png

       
       

      第14步 - 游戏分阶段

      篮球与挂钩连接后,玩家的下一个操作就是断开连接,这一操作会将篮球抛向篮筐。为了让用户界面简洁,这一操作我们还是用同一个按钮。

      由于我们将同一个按钮用于不同的用途,我们想一个办法来跟踪当前的“游戏阶段”。在这个游戏中,有3个阶段:

      • 第1阶段:从游戏开始到玩家将篮球与挂钩连接;
      • 第2阶段:从玩家将篮球与挂钩连接到玩家将二者断开连接;
      • 第3阶段:篮球与挂钩断开连接之后。

      我们可以用一个变量“阶段”来表示游戏处于哪一阶段。新建这一变量,在游戏开始时将其设置为1:

      14.png

       
       

      第15步 - 在第1阶段点击按钮

      现在,当点击按钮时我们就可以运行不同的积木代码。只有当变量“阶段”为1时才运行现有这些积木代码:

      15.png

       
       

      第16步 - 为第2阶段做准备

      完成第1阶段后,我们要进入第2阶段,就要把变量“阶段”更新为2。同时,我们要把按钮改为显示“断开链接”,因为玩家要在第2阶段断开绳子:
      16.png

       
      现在当我们点击按钮时,按钮就会改变:

      Animation3.gif

       
       

      第17步 - 在第2阶段点击按钮

      在第2阶段,当用户点击按钮后,我们就应当移除距离约束和绳子,从而让篮球自由飞出去。同时我们还要删除按钮,因为玩家不需要再操作什么了。然后把变量“阶段”更新为3。

      19.png

       
      现在就可以玩游戏啦!点击“连接”即可添加绳子,点击“断开连接”即可抛出篮球:

      Animation5.gif

       
       

      第18步 - 检查成功与否

      在第3阶段,我们要检查篮球是否落入篮筐中。我们可以用一个无限循环每秒检查一次:

      20.png

       
       

      第19步 - 检查篮球的位置和速度

      如果篮球已经落入篮筐中,就不会再动了,其z坐标应当不变。我们可以用如下这两个“获取”积木检查两个值:

      Animation6.gif

       
      z速度应当接近0,z位置应当约为-131.8。我们用这两个条件检查成功与否,如果成功就显示一个标签。
       
      21.png

       
      现在我们就会得到如下的成功消息:

      Animation7.gif

       
       

      第20步 - 修改标签样式

      为了让标签更美观一些,我们可以修改其背景和文字样式:
       
      22.png

       
      现在的成功消息如下所示:

      23.png

       
       

      第21步 - 整理程序代码

      最后要整理一下程序代码,要隐藏三维坐标轴:

      24.png

       
      游戏最终演示效果如下:

      Animation8.gif

       
       

      创意扩展

      大家可以把这个项目扩展成多种形式。以下是一些思路:

      • 修改参数:大家可以把篮球、挂钩和篮筐移到别的位置。可以更改篮球或篮筐的大小,还可以更改场景的重力。

      • 2个挂钩:从第1个挂钩断开连接后,可以让玩家在第三阶段再连接到另一个挂钩,然后在第4阶段断开连接。第2个挂钩还可以在不同方向上。这就会让游戏更有难度。示例如下:

      Animation9.gif

       

      • 障碍物:为了让游戏更具挑战性,大家可以添加一些静止的障碍物,玩家必须要躲避障碍物。
      1 Reply Last reply Reply Quote 0
      • First post
        Last post