跳转到内容

Blender 3D:从新手到专业/平台游戏:物理修复

来自 Wikibooks,开放世界中的开放书籍

本教程旨在改进其前篇,平台游戏:创建和控制,并将需要通过该教程创建的文件。建议您在开始本教程之前阅读 一个令人惊叹的游戏引擎教程。它将需要您熟悉 Blender UI、简单命令(例如 A 键选择)和基本建模技能。本教程将介绍以下功能和改进

  1. 仅允许角色在接触地面时跳跃
  2. 阻止角色在撞击物体时大幅弹跳
  3. 调整材质摩擦力的地方

本教程是为 2.45 版本编写的。

创建你的碰撞测试物体

[编辑 | 编辑源代码]

使用 **SHIFT-D** 复制立方体。进入编辑模式,选择立方体的底部四个顶点并删除它们。返回物体模式。转到按钮窗口中的编辑面板。在“链接和材质”部分,将 ME:值更改为“Square”,将 OB:值更改为“FloorHit”。在“网格”部分,将有三个带有“中心”字样的按钮;中心、中心新建和中心光标。按下“中心新建”。这将更改“Square”网格的原点,使其位于所有顶点的中心,而不是位于您制作它的立方体的中心。将其缩放到原始大小的 99%,然后沿 Z 轴向上移动 0.01。现在转到着色面板,并确保您在材质按钮子面板中。找到链接和管道,并确保“ME 被选中。单击材质选择旁边的 X(在“链接到物体”字样下)。然后选择“OB”,按下“添加新”并为该材质命名为“FloorHit”(同样,不加引号)。将其设置为绿色,这样您在编辑时可以轻松找到它,但请在“材质”部分打开“无阴影”和“无雾”,并在“链接和管道 - 渲染管道”部分打开“仅投射阴影”,并在“渲染管道”部分关闭“无线电”、“可跟踪”和“Shad(ow)buffer”,在“着色器”部分关闭“阴影”。这将使其在运行时完全不可见,并且占用很少的资源。

(问题:它不会使其不可见,只是快速闪烁)

让传感器需要地面接触

[编辑 | 编辑源代码]

现在选择苏珊娜并转到逻辑面板。添加一个名为“jumpcol”(表示“跳跃碰撞”)的接触传感器,并将其连接到与跳跃键盘传感器相同的 AND 控制器。将 f 设置为 10,将 MA:设置为 FloorHit。这将使您的角色只能在接触具有 FloorHit 材质的物体时跳跃。同样地,您可以将其链接到您所有与移动相关的 AND 控制器,这样玩家就无法在空中调整其移动。这是一种不错的物理效果,但对于大多数平台游戏来说,它并不适用,因为在空中灵活性几乎是必不可少的。您还必须使用 Force 而不是 dLoc,否则您的角色在跳跃时将无法移动,除非您的角色只需要用头撞击物体,而不是跳过空隙。请注意,这仍然不能阻止角色在接触碰撞面的侧面时跳跃,因此他们仍然可以跳跃,如果他们接触碰撞面的侧面,但至少他们不能在空中或接触地面的底部时跳跃。我还没有找到一个不涉及 Python 的解决这个问题的方法。

过度弹跳

[编辑 | 编辑源代码]

您可能已经注意到,原始模型的另一个问题是,当您撞到地面立方体时,您会弹回很多。要解决这个问题,请选择其中一个绿色的碰撞测试正方形,然后转到材质面板。在颜色选择器下面应该有三个按钮,分别显示“RGB”、“HSV”和“DYN”。选择“DYN”,并将恢复值调到最大或全部调到最大。如您所见,您也可以从这里找到摩擦属性,如果您希望您的地面具有更大或更小的摩擦力(如泥土或冰)。

最终说明

[编辑 | 编辑源代码]

始终使用 **ALT-D** 复制您的地板、它们各自的碰撞测试物体和其他通用物体,而不是使用 **SHIFT-D**。这样可以防止您复制对于每个物体都保持不变的东西,例如材质和网格,如果未回收,这些东西会很快消耗资源。由于在学习 Python 之前,您无法再进一步进行平台游戏,因此建议您开始查找有关 Blender API 的信息。一些必要的信息可以在 过程化物体创建 教程中找到。本教程的最终产品的 Blend 文件即将推出。

注意:可以在本教程的讨论页面上找到一个(可能是)更简单的方法来限制跳跃。

华夏公益教科书