尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Box2DSharp三种刚体类型与碰撞过滤实战:static、kinematic、dynamic怎么选?
Box2DSharp三种刚体类型与碰撞过滤实战static、kinematic、dynamic怎么选【免费下载链接】Box2DSharpA C# port of Box2D项目地址: https://gitcode.com/gh_mirrors/bo/Box2DSharpBox2DSharp是一个基于 C# 的 Box2D 物理引擎移植项目它为 2D 游戏和应用提供刚体模拟、碰撞检测和碰撞过滤能力。很多新手在创建世界后第一个困惑就是刚体Body明明看起来差不多为什么有的会动、有的纹丝不动答案就在static、kinematic、dynamic三种刚体类型上。本文用一个清晰的对照表 实际用例帮你 5 分钟搞懂刚体类型怎么选以及碰撞过滤Collision Filtering如何控制谁和谁能撞。一、三种刚体类型速查表Box2DSharp 中的刚体类型定义在 src/Dynamics/Body.cs 的BodyType枚举中源码注释给出了最权威的一句话解释刚体类型质量速度谁来驱动它典型用途StaticBody静态零零手动移动地面、墙壁、不可破坏的障碍KinematicBody运动学零非零用户设定你写代码驱动传送带、自动门、玩家操控平台DynamicBody动力学正数由力决定物理引擎求解小球、箱子、角色、子弹一句话记忆法️static 摆在那儿谁也推不动kinematic 像电影镜头一样按你给的剧本走但会挡住别人dynamic 完全交给物理引擎重力、碰撞、力都影响它二、static 静态刚体场景的地基静态刚体质量为零、速度为零不参与受力计算因此开销最小。地面、天花板、固定障碍物都应该用它。在官方示例 test/Testbed.TestCases/CollisionFiltering.cs 中地面就是这样创建的默认BodyDef不指定类型时就是StaticBody再挂上一个EdgeShape边形状作为地面线。 注意静态刚体可以被手动改位置瞬移但物理引擎不会模拟它的运动所以不要用逐帧挪动静态刚体来模拟滑动平台——那是 kinematic 的活。三、kinematic 运动学刚体按剧本移动的演员运动学刚体是新手最容易用错的一种它质量为零不受力和碰撞的影响但你可以通过SetLinearVelocity给它指定速度然后由求解器带着它移动。项目自带了一个教科书级的演示 test/Testbed.TestCases/BodyTypes.cs一个悬挂的平台可以被按键切换成 dynamic / static / kinematic 三种类型实时对比。切到 kinematic 后平台在PreStep()中按自己设定的速度来回移动撞到球会把球带走但球却压不动它——这正是运动学刚体的精髓_platform.BodyType BodyType.KinematicBody; _platform.SetLinearVelocity(new Vector2(-_speed, 0.0f));典型场景来回移动的关卡平台传送带表面配合Friction摩擦力推物体玩家直接控制位移的传送门、电梯四、dynamic 动力学刚体完全交给物理引擎动力学刚体有正的质量质量 密度 × 形状面积它的速度完全由重力、外力、碰撞冲量共同决定。小球、箱子、角色都应该是 dynamic。创建时的关键在FixtureDef.Density密度定义于 src/Dynamics/Fixture.cs。密度为 0 的 dynamic 刚体会被引擎自动改为质量 1所以想悬浮不掉落时优先考虑把GravityScale设为 0 或改用 kinematic而不是玩密度的小聪明。另外一个实用开关BodyDef.Bullet。高速小物体容易穿过薄墙把 dynamic 刚体标记为 Bullet 可以开启连续碰撞检测但会增加计算开销官方注释也提醒应谨慎使用。五、碰撞过滤实战谁和谁会发生碰撞刚体类型解决怎么动碰撞过滤解决撞不撞。每个 Fixture 都有一个Filter包含三个字段定义在 src/Dynamics/Fixture.cs字段类型含义CategoryBitsushort位掩码我是什么占据若干位MaskBitsushort位掩码我能碰到什么GroupIndexshort同组特殊规则0 组内强制碰撞0 组内强制不碰判定逻辑写在 src/Dynamics/DefaultContactFilter.cs 的ShouldCollide中只有两步两个 shape 的GroupIndex相同且不为 0 → 正数碰、负数不碰直接返回否则要求双向位与都非零A.Mask B.Category ! 0且B.Mask A.Category ! 0两个方向都看得见才算碰撞。⚠️ 常见坑只改了 A 的 Mask 却忘了 B 的 Mask结果还是双向不可见以为过滤没生效。一个完整的过滤配置思路参考官方用例 test/Testbed.TestCases/CollisionFiltering.cs它定义了四种类别位private const ushort DefaultCategory 0x0001; private const ushort TriangleCategory 0x0002; private const ushort BoxCategory 0x0004; private const ushort CircleCategory 0x0008;再配合小组SmallGroup 1同组必碰和大组LargeGroup -1同组必不碰就可以做出小方块能穿过大三角形、但大三角形之间互相穿过这类精细规则。配置口诀先给每个逻辑类别分一个唯一的位0x01、0x02、0x04……别复用每个类别的MaskBits写成我能碰的所有类别的按位或同角色之间需要强规则必碰/必不碰时再上GroupIndex。六、选型决策清单按下面的顺序问自己基本不会选错它会受力、被重力影响、被碰撞推动吗 → 是DynamicBody它需要按脚本精确移动平台、传送带但不该被碰撞物顶走吗 → 是KinematicBody它永远静止不动吗 → 是StaticBody默认值最省事再叠加过滤规则只关心接触事件、不需要物理阻挡 → 把FixtureDef.IsSensor设为true传感器角色要和地面/道具/其他角色分通道碰撞 →CategoryBitsMaskBits同类物体必须或必须不互碰 →GroupIndex用 ±1七、小结Box2DSharp 的三种刚体类型本质上是谁掌握控制权的分工static 归场景、kinematic 归代码、dynamic 归引擎。而CategoryBits/MaskBits/GroupIndex这套位掩码过滤机制让你能在不改逻辑的前提下精确控制碰撞矩阵。理解了这张对照表和双向位与的判定规则传送带、传感器触发器、多层角色碰撞这些常见需求就都能落地了。上手建议直接打开 test/Testbed.TestCases/ 下的BodyTypes.cs、CollisionFiltering.cs、Sensors.cs三个用例运行调试比看文档更快建立直觉。【免费下载链接】Box2DSharpA C# port of Box2D项目地址: https://gitcode.com/gh_mirrors/bo/Box2DSharp创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

ComfyUI一站式AI视频创作:从零搭建文生视频、图生视频与短剧工作流

ComfyUI一站式AI视频创作:从零搭建文生视频、图生视频与短剧工作流

最近在尝试用AI生成视频内容时,发现很多工具要么效果僵硬,要么流程复杂,要么对硬件要求极高。特别是想制作一些带剧情的短剧或漫剧时,往往需要多个工具来回切换,效率低下。直到深入研究了ComfyUI,才发现它通…

📅 2026/11/9 17:09:19
Gyroflow 防抖实战指南:让相机里的陀螺仪数据救回晃动素材

Gyroflow 防抖实战指南:让相机里的陀螺仪数据救回晃动素材

Gyroflow 防抖实战指南:让相机里的陀螺仪数据救回晃动素材 【免费下载链接】gyroflow Video stabilization using gyroscope data 项目地址: https://gitcode.com/GitHub_Trending/gy/gyroflow 当你回看昨天用 GoPro 拍的 4K 60fps 素材,快速甩头…

📅 2026/10/30 14:36:20
InsForge BaaS 性能基准实测:与 Supabase、Vercel、AWS Lambda 的完整数据对比(附测试方法)

InsForge BaaS 性能基准实测:与 Supabase、Vercel、AWS Lambda 的完整数据对比(附测试方法)

InsForge BaaS 性能基准实测:与 Supabase、Vercel、AWS Lambda 的完整数据对比(附测试方法) 【免费下载链接】InsForge The all-in-one, open-source backend platform for agentic coding. InsForge gives your coding agent database, auth…

📅 2026/10/9 3:04:08
MORE NEWS

更多资讯

📰

安监局考电工证要几天报名入口与办理流程 值不值得考

安监局考电工证要几天报名入口与办理流程 值不值得考 工地太忙根本没时间复习考试,你是不是也经常听到身边人抱怨?别急,今天就来聊聊【安监局考电工证要几天】这个事,顺便说说这个证到底 值不值得考…

📰

_济南电工证补贴到期换证流程

济南电工证补贴到期怎么换证?多少钱你知道吗? 证书过期了不知道怎么复审延期?你是不是也遇到过这种情况?电工证作为特种作业操作证中最重要的一个工种,不仅关系到你的工作资格,也直接影响到你能否正常上岗。尤其是现在国家对特种作业操作证的管理越来越…

📰

福建高压电工证有补贴吗?学历不高也能拿全国通用证书

福建高压电工证有补贴吗?学历不高也能拿全国通用证书 你是不是也担心学历不高报不了名?别急,福建高压电工证不仅有补贴,而且 全国通用…

📰

电工证异地转移保姆级教程:微信上查询电工证能解决你的燃眉之急

电工证异地转移保姆级教程:微信上查询电工证能解决你的燃眉之急 之前考的证在外省能不能转过来?别急,今天就用 保姆级教程 手把手教你如何通过 微信上查询电工证 ,快速完成异地转移,省时省力不走弯路。 电工证异地转移,不是“异地恋”这么简单…

📰

松山湖电工证培训真实经历:别再被中介骗了,看这篇就够了

松山湖电工证培训真实经历:别再被中介骗了,看这篇就够了 不知道去哪报名怕被中介坑,这是很多在松山湖从事电工工作的朋友的真实经历。很多人辛辛苦苦攒钱,结果被一些打着“包过”旗号的中介坑了钱,最后连报名都没成功。今天我就以一名郑州在职建筑工人的…

📰

电工证国家培训值不值得考?证书过期了不知道怎么复审延期怎么办

电工证国家培训值不值得考?证书过期了不知道怎么复审延期怎么办 你是不是也遇到过这种情况:电工证快到期了,但不知道怎么复审延期,眼看着证书失效,工作也跟着受影响?别急,今天就来聊聊【电工证国家培训】到底值不值得考,以及怎么操作才能稳稳保住你的…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬