三维物理 - 蜘蛛人篮球(难度:5级)
- 
					
					
					
					
 相关主题
 引言
 在本教程中,你将使用物理引擎制作一个有趣的篮球游戏: 游戏的想法是,篮球通过一根绳子连接到空中的一个挂钩上,就像蜘蛛侠一样向前摆动。玩家可以决定何时添加或移除这根绳子,让球落入篮筐。 
 第1步 - 创建带有物理效果的空场景
 首先,请在CreatiCode游乐场上创建一个新项目,删除小狗的角色Sprite1,并将“Empty1”角色重命名为“Main”(主角色)。在Main角色中,添加以下积木块。它们将创建一个带有蓝天的3D场景,显示3D坐标轴,并用-500的重力启用物理效果。  
 你应该会看到: 
 第2步 - 制作4个新积木
 在这个游戏中,4个关键部件是篮筐、中间的挂钩、篮球和它的支架。让我们制作这4个新积木来组织我们的代码: 
 第3步 - 使用矩形管添加篮筐
 为了盛装篮球,我们可以使用顶部开口的矩形管。以下3个积木将添加一个尺寸为150x150,深度为80的矩形管。我们使用“矩形管”形状为其添加物理实体,并将其质量设为0,让它悬浮在空中。把回弹设为0,这样球就不会弹出来,摩擦设为100%会减慢球的旋转速度。我们用白色线条在绿色网格上绘制。 
 你会得到这样的篮筐:
 
  
 第4步 - 移动和旋转篮筐
 接下来,我们沿Y轴向前移动篮筐,让球有足够的摆动空间。还要让篮筐绕X轴旋转45度,这样它的开口就会面向我们。 
 现在篮筐的位置是这样的: 
 第5步 - 添加挂钩
 现在让我们添加挂钩。我们将用一个圆环来表示挂钩。由于没有“圆环”形状的物理实体,我们可以简单地使用“球体”或“盒子”形状。因为挂钩不会与其他物体碰撞,形状并不重要。把质量设为0,让它保持不动。回弹和摩擦的值也不重要。你可以为它添加任何颜色的网格材质。 
 它应该看起来像这样: 
 第6步 - 移动和旋转挂钩
 挂钩需要被移动得更高,这样它可以帮助球摆动更长的距离。还要让它竖直站立。这两个积木可以做到: 
 现在挂钩看起来是这样的: 
 第7步 - 添加球的支架
 球的支架是一个放在球下面的小平面。当游戏开始时,球会在支架上弹跳,直到用户将球连接到挂钩。我们将支架放在Y位置为-500的地方,这样当连接到挂钩时,球会向前摆动。支架的回弹设为100%,以保持球反弹。  
 支架会看起来像这样: 
 第8步 - 添加篮球
 最后一个部件是篮球。注意,它需要被命名,并且需要使用25的Z偏移量,这是它高度的一半。它将被放在球的支架正上方。回弹设为100%,以保持它从支架上反弹。摩擦设为100%,这样当它落入篮筐时会迅速停止旋转。  
 现在运行程序,你应该看到一个弹跳的球: 
 第9步 - 添加跟随摄像机
 因为球会向前摆动,我们需要添加一个跟随摄像机来跟随球。我们将让摄像机以水平角度45度观察球,这样更容易判断何时连接或断开球与挂钩。我们还将其设置为“自由”模式,这样玩家可以自由调整摄像机。 
 现在球会始终在我们的摄像机视图中心: 
 第10步 - 添加一个按钮控件
 为了让玩家连接或断开球与挂钩,我们可以使用按键事件或按钮点击事件。在这种情况下,按钮更好,因为它可以让玩家在手机或iPad上玩,这些设备没有键盘。以下积木将按钮放在舞台的右下角。因为玩家的第一个动作是连接球与挂钩,我们应该在按钮上显示“连接”。  
 按钮的默认样式如下: 
 第11步 - 更新按钮样式
 为了让按钮看起来更好,我们可以用这两个积木改变背景和文字样式: 
 按钮现在看起来是这样的: 
 第12步 - 将球连接到挂钩
 现在我们准备好这个项目中最重要的一步了。为了让它看起来像球用一根绳子连接到挂钩,我们需要做两件事。- 首先,我们需要添加一个距离约束,它会让球与挂钩保持相同的距离。有了这个约束,球不会掉下来,而是在挂钩下方来回摆动。
- 其次,我们需要在球和挂钩之间添加一条线来表示“绳子”。注意我们需要使用移动的线,它会随着球移动。
 注意,当我们添加距离约束时,我们需要使用“挂钩”作为第一个输入,因为挂钩是静止的,而球会摆动。“移动的线”会随着球移动,我们可以用“地毯”纹理来更新线条,使其看起来像绳子。  
 现在如果我们点击“连接”,绳子会出现,看起来球在摆动。 
 第13步 - 移除球的支架
 当球在挂钩下摆动时,有时它可能会碰到球的支架: 
 为了避免这个问题,我们应该在连接球与挂钩时移除球的支架: 
 第14步 - 游戏阶段
 当球连接到挂钩后,玩家的下一个动作是断开连接,这会把球投向篮筐。为了让界面简单,我们可以重复使用同一个按钮来执行这个动作。因为我们使用同一个按钮来执行不同的操作,我们需要一种方法来跟踪当前的“游戏阶段”。在这个游戏中,有3个阶段: - 阶段1:从游戏开始到玩家将球连接到挂钩的那一刻;
- 阶段2:从玩家将球连接到挂钩的那一刻到玩家断开连接的那一刻;
- 阶段3:球从挂钩上断开后。
 我们可以使用一个名为“phase”(阶段)的变量来表示当前的阶段。请创建这个新变量,并在游戏开始时将其设为1:  
 第15步 - 在阶段1处理按钮点击
 现在我们可以在按钮被点击时运行不同的代码块。我们已有的代码块应该只在“phase”变量为1时运行: 
 第16步 - 准备进入阶段2
 完成阶段1后,我们应该将“phase”变量设为2,因为我们进入了阶段2。还要把按钮改为显示“断开”,因为玩家需要在阶段2断开绳子: 
 现在,当我们点击它时,按钮会改变文字: 
 第17步 - 在阶段2处理按钮点击
 在阶段2,当用户点击按钮时,我们应该移除距离约束和绳子,让球自由飞行。还要移除按钮,因为玩家没有更多的操作。我们也应该将“phase”设为3。 
 现在游戏可以玩了!点击“连接”添加绳子,然后点击“断开”投篮: 
 第18步 - 检查是否成功
 在阶段3,我们需要检查球是否落入篮筐。我们可以用一个“永久重复”循环每秒检查一次: 
 第19步 - 检查球的位置和速度
 如果球落入篮筐,它应该停止移动,Z轴的位置应该相对稳定。我们可以直接使用“获取”积木来检查这两个值: 
 Z轴速度应该接近0,Z轴位置应该大约是-131.8。我们可以用这两个条件来检查是否成功,如果成功就显示一个标签。 
 现在我们会得到这样的成功消息: 
 第20步 - 更新标签样式
 为了让标签看起来更好,我们可以更新它的背景和文字样式: 
 现在成功消息看起来是这样的: 
 第21步 - 清理工作
 最后,为了清理一下,我们应该隐藏3D坐标轴: 
 这是游戏的最终演示: 
 创意想法
 你可以用很多方法来扩展这个项目。以下是一些示例想法:- 
改变参数:你可以将球、挂钩和篮筐移动到不同的位置。你可以改变球或篮筐的大小,或者改变场景的重力。 
- 
两个挂钩:在从第一个挂钩断开后,你可以允许玩家在阶段3连接到另一个挂钩,然后在阶段4从它断开。第二个挂钩也可以在不同的方向上。这会让游戏更加有挑战性。下面是一个示例: 
  - 障碍物:为了让游戏更加有趣,你可以添加一些静态物体作为障碍物,让玩家必须避开它们。