Navigation

    CreatiCode Scratch Forum

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

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

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

      相关主题

      • 为3D场景启用物理效果
      • 为3D物体添加物理实体

       
       

      引言

       
      在本教程中,你将使用物理引擎制作一个有趣的篮球游戏:

      final.gif

      游戏的想法是,篮球通过一根绳子连接到空中的一个挂钩上,就像蜘蛛侠一样向前摆动。玩家可以决定何时添加或移除这根绳子,让球落入篮筐。

       
       

      第1步 - 创建带有物理效果的空场景

       
      首先,请在CreatiCode游乐场上创建一个新项目,删除小狗的角色Sprite1,并将“Empty1”角色重命名为“Main”(主角色)。

      在Main角色中,添加以下积木块。它们将创建一个带有蓝天的3D场景,显示3D坐标轴,并用-500的重力启用物理效果。

      df9acde5-8627-414e-9849-f931cdd9bc0e-image.png

       
      你应该会看到:

       
       

      第2步 - 制作4个新积木

       
      在这个游戏中,4个关键部件是篮筐、中间的挂钩、篮球和它的支架。让我们制作这4个新积木来组织我们的代码:

      c44f76b4-d098-40c1-bbd2-10363ff17069-image.png

       
       

      第3步 - 使用矩形管添加篮筐

       
      为了盛装篮球,我们可以使用顶部开口的矩形管。以下3个积木将添加一个尺寸为150x150,深度为80的矩形管。我们使用“矩形管”形状为其添加物理实体,并将其质量设为0,让它悬浮在空中。把回弹设为0,这样球就不会弹出来,摩擦设为100%会减慢球的旋转速度。我们用白色线条在绿色网格上绘制。

      278af8bd-41a4-48e9-b1e4-a677b7a13f61-image.png

       
      你会得到这样的篮筐:
       
      s1.gif

       
       

      第4步 - 移动和旋转篮筐

       
      接下来,我们沿Y轴向前移动篮筐,让球有足够的摆动空间。还要让篮筐绕X轴旋转45度,这样它的开口就会面向我们。

      f12978f2-1e93-462e-92f1-513caf9a7b1c-image.png

       
      现在篮筐的位置是这样的:

      s1.gif

       
       

      第5步 - 添加挂钩

       
      现在让我们添加挂钩。我们将用一个圆环来表示挂钩。由于没有“圆环”形状的物理实体,我们可以简单地使用“球体”或“盒子”形状。因为挂钩不会与其他物体碰撞,形状并不重要。把质量设为0,让它保持不动。回弹和摩擦的值也不重要。你可以为它添加任何颜色的网格材质。

      b0d0d741-0fac-47e9-ab50-c3d751582ad4-image.png

       
      它应该看起来像这样:

      s1.gif

       
       

      第6步 - 移动和旋转挂钩

       
      挂钩需要被移动得更高,这样它可以帮助球摆动更长的距离。还要让它竖直站立。这两个积木可以做到:

      676392e9-63c6-4e79-8b45-a4fe10b19ef8-image.png

       
      现在挂钩看起来是这样的:

      s1.gif

       
       

      第7步 - 添加球的支架

       
      球的支架是一个放在球下面的小平面。当游戏开始时,球会在支架上弹跳,直到用户将球连接到挂钩。

      我们将支架放在Y位置为-500的地方,这样当连接到挂钩时,球会向前摆动。支架的回弹设为100%,以保持球反弹。

      f282cc1c-e7fb-42d4-8c9c-7fdffced1b32-image.png

       
      支架会看起来像这样:

      s1.gif

       
       

      第8步 - 添加篮球

       
      最后一个部件是篮球。注意,它需要被命名,并且需要使用25的Z偏移量,这是它高度的一半。

      它将被放在球的支架正上方。回弹设为100%,以保持它从支架上反弹。摩擦设为100%,这样当它落入篮筐时会迅速停止旋转。

      0a3f484d-23d7-418a-90d6-c74e47cbf2fb-image.png

       
      现在运行程序,你应该看到一个弹跳的球:

      s1.gif

       
       

      第9步 - 添加跟随摄像机

       
      因为球会向前摆动,我们需要添加一个跟随摄像机来跟随球。我们将让摄像机以水平角度45度观察球,这样更容易判断何时连接或断开球与挂钩。我们还将其设置为“自由”模式,这样玩家可以自由调整摄像机。

      2d66fc80-ec00-42fc-82a9-b9fc458ee405-image.png

       
      现在球会始终在我们的摄像机视图中心:

      s1.gif

       
       

      第10步 - 添加一个按钮控件

       
      为了让玩家连接或断开球与挂钩,我们可以使用按键事件或按钮点击事件。在这种情况下,按钮更好,因为它可以让玩家在手机或iPad上玩,这些设备没有键盘。

      以下积木将按钮放在舞台的右下角。因为玩家的第一个动作是连接球与挂钩,我们应该在按钮上显示“连接”。

      8a797092-04cc-4470-a85b-848aba41d832-image.png

       
      按钮的默认样式如下:

      39a140f0-6d93-416b-a47e-856a74116bd3-image.png

       
       

      第11步 - 更新按钮样式

       
      为了让按钮看起来更好,我们可以用这两个积木改变背景和文字样式:

      fd2339db-5baf-4585-b726-0750f0b0d6d8-image.png

       
      按钮现在看起来是这样的:

      eeed1626-bc15-4cdf-a915-808b9f31dd9a-image.png

       
       

      第12步 - 将球连接到挂钩

       
      现在我们准备好这个项目中最重要的一步了。为了让它看起来像球用一根绳子连接到挂钩,我们需要做两件事。

      • 首先,我们需要添加一个距离约束,它会让球与挂钩保持相同的距离。有了这个约束,球不会掉下来,而是在挂钩下方来回摆动。
      • 其次,我们需要在球和挂钩之间添加一条线来表示“绳子”。注意我们需要使用移动的线,它会随着球移动。

      注意,当我们添加距离约束时,我们需要使用“挂钩”作为第一个输入,因为挂钩是静止的,而球会摆动。“移动的线”会随着球移动,我们可以用“地毯”纹理来更新线条,使其看起来像绳子。

      500b7bdc-1a9f-4331-8f5c-7423b438f4c0-image.png

       
      现在如果我们点击“连接”,绳子会出现,看起来球在摆动。

      s1.gif

       
       

      第13步 - 移除球的支架

       
      当球在挂钩下摆动时,有时它可能会碰到球的支架:

      s1.gif

       
      为了避免这个问题,我们应该在连接球与挂钩时移除球的支架:

      0720b6b6-2b6f-47ec-97e1-f70a27a33f52-image.png

       
       

      第14步 - 游戏阶段

       
      当球连接到挂钩后,玩家的下一个动作是断开连接,这会把球投向篮筐。为了让界面简单,我们可以重复使用同一个按钮来执行这个动作。

      因为我们使用同一个按钮来执行不同的操作,我们需要一种方法来跟踪当前的“游戏阶段”。在这个游戏中,有3个阶段:

      • 阶段1:从游戏开始到玩家将球连接到挂钩的那一刻;
      • 阶段2:从玩家将球连接到挂钩的那一刻到玩家断开连接的那一刻;
      • 阶段3:球从挂钩上断开后。

      我们可以使用一个名为“phase”(阶段)的变量来表示当前的阶段。请创建这个新变量,并在游戏开始时将其设为1:

      98c2a2ee-3b8f-40ee-b5c8-053efabbf95d-image.png

       
       

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

       
      现在我们可以在按钮被点击时运行不同的代码块。我们已有的代码块应该只在“phase”变量为1时运行:

      ba8e8436-c818-404d-8aa0-09ca951380f8-image.png

       
       

      第16步 - 准备进入阶段2

       
      完成阶段1后,我们应该将“phase”变量设为2,因为我们进入了阶段2。还要把按钮改为显示“断开”,因为玩家需要在阶段2断开绳子:

      5efb8b55-bb86-418b-bf8b-78eb756c6f91-image.png

       
      现在,当我们点击它时,按钮会改变文字:

      s1.gif

       
       

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

       
      在阶段2,当用户点击按钮时,我们应该移除距离约束和绳子,让球自由飞行。还要移除按钮,因为玩家没有更多的操作。我们也应该将“phase”设为3。

      1368190c-1388-42e0-b570-b48a3aa9a3a5-image.png

       
      现在游戏可以玩了!点击“连接”添加绳子,然后点击“断开”投篮:

      s1.gif

       
       

      第18步 - 检查是否成功

       
      在阶段3,我们需要检查球是否落入篮筐。我们可以用一个“永久重复”循环每秒检查一次:

      47be2a6b-93b4-4067-88a5-6aae5fe95a86-image.png

       
       

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

       
      如果球落入篮筐,它应该停止移动,Z轴的位置应该相对稳定。我们可以直接使用“获取”积木来检查这两个值:

      s1.gif

       
      Z轴速度应该接近0,Z轴位置应该大约是-131.8。我们可以用这两个条件来检查是否成功,如果成功就显示一个标签。

      9092ebfc-e662-454d-82ba-3ecf4ad36626-image.png

       
      现在我们会得到这样的成功消息:

      s1.gif

       
       

      第20步 - 更新标签样式

       
      为了让标签看起来更好,我们可以更新它的背景和文字样式:

      2aa365ab-b3eb-415e-adc1-2ed9840166ff-image.png

       
      现在成功消息看起来是这样的:

      4f32fc43-8cea-4385-8666-1c38c568afe9-image.png

       
       

      第21步 - 清理工作

       
      最后,为了清理一下,我们应该隐藏3D坐标轴:

      33663d64-3a95-452e-bf5f-88405fd7db25-image.png

       
      这是游戏的最终演示:

      final.gif

       
       

      创意想法

       
      你可以用很多方法来扩展这个项目。以下是一些示例想法:

      • 改变参数:你可以将球、挂钩和篮筐移动到不同的位置。你可以改变球或篮筐的大小,或者改变场景的重力。

      • 两个挂钩:在从第一个挂钩断开后,你可以允许玩家在阶段3连接到另一个挂钩,然后在阶段4从它断开。第二个挂钩也可以在不同的方向上。这会让游戏更加有挑战性。下面是一个示例:

       

      • 障碍物:为了让游戏更加有趣,你可以添加一些静态物体作为障碍物,让玩家必须避开它们。
      1 Reply Last reply Reply Quote 0
      • First post
        Last post