3.9.2 物理系统

优质
小牛编辑
134浏览
2023-12-01

物理系统(PhysicsSystem)用于管理所有物理相关的功能,目前它负责同步物理元素、触发物理事件和调度物理世界的迭代。

物理世界

物理世界迭代时会对物理元素进行物理计算,比如计算各物体是否产生碰撞,以及物体的受力情况。当计算完成后,物理系统会将物理世界更新到场景世界中,从而使游戏对象产生相应的物理行为。

目前 Cocos Creator 3D 的物理执行流程:触发物理事件 -> 场景同步到物理 -> 物理世界迭代 -> 物理同步到场景

:目前只有单一的物理世界,后续会探讨多物理世界的功能支持。

场景世界与物理世界: 场景世界与物理世界

部分属性

目前物理系统的属性暂时只能通过代码进行设置,后续将会增加设置面板,请留意更新公告。

:获取物理系统实例: PhysicsSystem.instance

属性解释
enable是否开启物理系统,默认为true
gravity物理世界的重力值,默认为 (0, -10, 0)
allowSleep是否允许物理系统自动休眠,默认为true
maxSubSteps每帧模拟的最大子步数,默认为2
fixedTimeStep每次子步进消耗的时间,默认为1/60
sleepThreshold进入休眠的默认速度临界值
autoSimulation是否开启自动模拟,默认为 true
defaultMaterial获取默认物理材质(只读)
raycastResults获取raycast的检测结果(只读)
raycastClosestResult获取raycastClosest的检测结果(只读)
useCollisionMatrix是否使用碰撞矩阵
collisionMatrix获取碰撞矩阵

部分接口

接口签名解释
isCollisionGroup(g1:number, g2:number)=>boolean两分组是否会产生碰撞?
setCollisionGroup(g1:number, g2:number, collision=true)=>void设置两分组是否产生碰撞
resetCollisionMatrix(mask=0xffffffff)=>void重置碰撞矩阵所有分组对应掩码为给定值
resetAccumulator(time=0)=>void重置累计的时间总量(可以考虑在切换场景时进行重置)

继续前往 物理组件 说明文档。