跳到内容

Godot 游戏引擎指南/物理

50% developed
来自维基教科书,开放的书籍,开放的世界

物理在许多游戏中被用于许多不同的用途,例如坠落、撞墙、跳跃等等。

StaticBody 是一个碰撞体,它不打算移动。虽然它可以移动,但它不应用于角色。

静态体可以毫无问题地缩放。

它是速度最快的碰撞体类型。它应该用于环境和其他不可移动的事物。

RigidBody 是一个受重力影响的对象。它通常不用于角色,因为它很难控制,但可以在物理模拟游戏中使用,因为它非常准确。

不能以任何方式缩放!

KinematicBody 是一个旨在通过脚本移动的物体。它也可以用作检测是否撞击物体或表面的方法。

运动学物体非常适合角色,但不应该用于模拟高级物理。

Area 可用于检测其他区域、刚体或运动学物体。重叠时会发出一个信号,当物体离开时也会发出另一个信号。

如果摄像机/音频监听器在区域内,则可以更改声音的效果。例如:跳入水中时,可以使汽车噪音变得沉闷。您可以通过更改“AudioBus”属性并选择总线来实现。您应该为此创建一个“沉闷”总线,并且audio_bus_override 必须设置为true。(这是覆盖的默认音频总线,这意味着汽车噪音不能使用音频总线。它不会将总线叠加在其他总线之上)。

为了使碰撞物体与另一个物体发生碰撞,它需要一个或多个CollisionShapeColisionPolygon 子节点。CollisionShapes 需要定义一个对象来设置它们的形状和大小,而 CollisionPolygons 需要定义多个边(至少 3 个)。

碰撞遮罩和层级

[编辑 | 编辑源代码]

每个物体都可以有遮罩和层级。如果至少一个遮罩等于重叠物体的层级,则这两个物体将被视为发生碰撞。这可以用来使玩家与地面、墙壁和敌人发生碰撞,但不能与其他玩家发生碰撞,或者与地面和墙壁发生碰撞。

每个层级可以在项目设置 -> 层级名称 -> 2d 物理项目设置 -> 层级名称 -> 3d 物理中指定名称。这可以提高可读性,并减少出现错误的可能性。以下是一个示例

  • 层级 1:世界(墙壁、地面、桥梁等)
  • 层级 2:玩家
  • 层级 3:敌人
  • 层级 4:弹药
  • 等等

柔软世界

[编辑 | 编辑源代码]

如果您的 3D 游戏使用 SoftBody,您可以模拟当另一个物体与其碰撞时会发生变形的物体。这对斗篷和窗帘很有用。如果未使用,最好关闭项目设置 -> 物理 -> 3d -> 活动柔软世界以提高性能。

物理引擎

[编辑 | 编辑源代码]
3D
  • GodotPhysics:简单且功能强大。与某些碰撞形状不兼容。
  • Bullet:默认引擎。不断检查碰撞,减少碰撞缺失,但性能成本更高。如果您的游戏包含快速移动的物体,例如赛车或子弹,请使用此引擎。
2D
  • GodotPhysics:默认引擎。简单且功能强大。



Godot 游戏引擎指南

入门 [编辑]
安装
什么是节点?
编程
资源和导入
信号和方法
你的第一个游戏
使其正常运行
调试
输入
物理
保存和加载
多人游戏
使其看起来更美观
UI 皮肤
动画
高级帮助
服务器(单例)
平台特定
优化
加密
导出
插件
其他
有用链接
作者和贡献者
打印版本


<-- 上一页 返回顶部 下一页 -->

华夏公益教科书