三维物理 - 蜘蛛人篮球(难度: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从它断开。第二个挂钩也可以在不同的方向上。这会让游戏更加有挑战性。下面是一个示例:

- 障碍物:为了让游戏更加有趣,你可以添加一些静态物体作为障碍物,让玩家必须避开它们。
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