Skip to content

简介

物理系统是 SandMod 编辑器的关键组成部分,因为它将真实世界的物理性质(如质量、重力和摩擦力)注入游戏世界,使游戏世界的运作更加真实。物理系统负责根据物体的物理性质模拟游戏世界中的运动和碰撞反馈。

值得注意的是,物理系统是一个复杂的系统,不仅与游戏逻辑相关,还与渲染系统、动画系统和音频系统相关。通常,游戏物理系统仅涵盖了牛顿力学的基础,如碰撞检测和刚体运动。其他物理现象,如流体力学或软体物理学,需要使用其他方法实现。

您可以使用物理系统相关的 API 对 游戏对象(Game Object)进行控制,在游戏中实现各种物理效果。

物理系统相关资产

SandMod 目前提供用于储存特定物理数据的物理系统相关资产分为以下类型:

👉 物理配置文件资产(Physics Setting Asset)记录了项目的通用物理属性。

👉 物理材质资产(Physic Material)记录了物体的物理属性,这些信息用来计算碰撞物体受到的摩擦力和弹力等,通过物理资产可将该属性复用至多个 游戏对象(Game Object)中。

物理系统相关组件

SandMod 目前提供的物理系统相关的 组件(Component)分为以下类型:

👉 角色控制器(Character Controller)组件可以为您的游戏添加简单易用的角色控制功能。

👉 刚体(Rigidbody)组件是组成物理世界的基本功能组件,它可以使 游戏对象(Game Object)受物理控制的方式运动。

👉 碰撞器(Collider)相关组件用于定义碰撞体形状。可在 场景预览窗口(Scene)下查看其形状,运行时不可见。其形状可以根据需求设置,无需与对象网格完全相同。

👉 关节(Joint)相关组件均依赖于刚体(Rigidbody)组件,可将某个 游戏对象(Game Object)的位置或旋转以特定的方式约束到其他游戏对象。

👉 布娃娃(Ragdoll)组件是一组碰撞体、刚体和关节的属性集合体,您可以将其应用于人形角色,以模拟该角色碰撞和死亡等行为。

物理检测

SandMod 目前提供的物理系统相关的检测分为以下类型:

👉 碰撞检测模式(Collision Detection Mode),定义带 刚体(Rigidbody)组件(Component)的 游戏对象(Game Object)及其子级游戏对象使用哪种算法来检测碰撞。不同的算法提供不同级别的准确度,但更准确的算法需要耗费更多运行性能。

👉 射线检测(Ray Cast)用于通过射线和线段对物理世界内的碰撞体进行检测。

👉 几何投射检测(Geometric Cast)会沿着指定的射线,发射不同的几何体,就像使用某个几何体沿着射线扫过一个区域。几何投射检测会对几何体扫过的物理世界区域内的碰撞体进行检查,并返回特定的结果。