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. 三维物理 - 蜘蛛人篮球(难度:5级)

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

Scheduled Pinned Locked Moved 小教程
1 Posts 1 Posters 931 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.
  • CreatiCodeI Offline
    CreatiCodeI Offline
    CreatiCode
    wrote on last edited by admin
    #1

    相关主题

    • 为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
    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