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),仅供参考

相关新闻

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

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

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

2026/8/24 11:00:01 阅读更多 →
Gyroflow 防抖实战指南:让相机里的陀螺仪数据救回晃动素材

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

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

2026/8/24 11:00:01 阅读更多 →
工业相机选型与图像采集框架构建实战指南

工业相机选型与图像采集框架构建实战指南

1. 工业相机:从“眼睛”到“数据源”的蜕变在自动化产线上,一个微小的划痕可能导致整批产品报废;在高速分拣系统中,毫秒级的识别延迟意味着效率的腰斩。这些场景背后,都离不开一双稳定、精准且不知疲倦的“眼睛”——工…

2026/8/24 10:59:01 阅读更多 →

最新新闻

FOC算法核心数学运算:正余弦表、CORDIC与定点数优化实践

FOC算法核心数学运算:正余弦表、CORDIC与定点数优化实践

1. 从“玄学”到“工程”:FOC算法中的数学基石搞电机控制,尤其是无刷电机的磁场定向控制,玩到后面你会发现,那些高大上的理论、复杂的观测器、精妙的补偿策略,最终都要落地到一行行具体的代码上。而支撑这些代码稳定、…

2026/8/24 18:04:07 阅读更多 →
SAP BP主数据LFB1屏幕增强实战:隐式增强与BAdI组合方案详解

SAP BP主数据LFB1屏幕增强实战:隐式增强与BAdI组合方案详解

1. 项目缘起:一个看似简单却暗藏玄机的需求最近在做一个SAP S/4HANA的财务模块实施项目,客户提出了一个非常具体但又很常见的要求:他们希望在业务伙伴(Business Partner,简称BP)主数据的公司代码视图&#…

2026/8/24 18:04:07 阅读更多 →
GB/T 3596-2008电线检测实操:用卡尺和万用表快速识别劣质线材

GB/T 3596-2008电线检测实操:用卡尺和万用表快速识别劣质线材

1. 从一次“烧线”事故说起:为什么你需要看懂GB/T 3596-2008前阵子帮朋友排查一个家庭作坊式小工厂的配电问题,一进车间就闻到一股淡淡的焦糊味。顺着味道找过去,发现一台功率不算大的三相电机接线端子处,包裹电工胶布的电线外皮已…

2026/8/24 18:04:07 阅读更多 →
[ML] Pytorch自学实战项目其4:基于学习(RNN)算法的车辆状态估计,展示归纳总结当前结果,以及展望下一步

[ML] Pytorch自学实战项目其4:基于学习(RNN)算法的车辆状态估计,展示归纳总结当前结果,以及展望下一步

写在前面 目前完成了的文章 普通全连接网络 初步建立和结构分析 部分优化以及修改为循环网络结构 RNN加入和结构优化 调整模型结构和超级参数优化及其可视化 初步调整超级参数TB应用到模型中改正了BN层为LN层调整features 相关知识整理 LN与BN层TensorBoard学习RNN部分笔记…

2026/8/24 18:04:07 阅读更多 →
idea连接linux远程docker调试详细教程操作

idea连接linux远程docker调试详细教程操作

1:修改docker配置文件docker.service vi /usr/lib/systemd/system/docker.service2:找到 ExecStart,在最后面添加 -H tcp://0.0.0.0:2375 # for containers run by docker ExecStart/usr/bin/dockerd -H fd:// --containerd/run/containerd/…

2026/8/24 18:04:07 阅读更多 →
如何用 skills 做网页情感分析?从几百条评论到一份看得懂的结论

如何用 skills 做网页情感分析?从几百条评论到一份看得懂的结论

如何用 skills 做网页情感分析?从几百条评论到一份看得懂的结论 【免费下载链接】skills Browserbases official collection of agent skills to access the web. 项目地址: https://gitcode.com/GitHub_Trending/skills23/skills 面对几百条网页评论、用户评…

2026/8/24 18:03:07 阅读更多 →

日新闻

前端内容安全与依赖审计实践

前端内容安全与依赖审计实践

前端内容安全与依赖审计实践 前端安全依赖分层防护。没有任何单一配置能替代输出编码、权限校验和依赖更新。 把不可信内容当作数据 默认使用框架的转义能力;确需渲染 HTML 时,先在服务端或可信的客户端库中进行白名单过滤。避免把用户输入直接赋给 inne…

2026/8/24 1:08:15 阅读更多 →
Windows登录密码存储机制全解析:从哈希算法到安全加固实战

Windows登录密码存储机制全解析:从哈希算法到安全加固实战

1. 项目概述:Windows登录密码的“黑匣子”每次你按下CtrlAltDel,输入密码,然后看到那个熟悉的桌面,这背后发生了一系列复杂而精密的操作。作为一名长期与Windows系统打交道的从业者,我经常被问到:“我的密码…

2026/8/24 1:08:15 阅读更多 →
AI面试系统安全挑战与解决方案

AI面试系统安全挑战与解决方案

1. 项目概述:AI面试系统的安全挑战去年参与某跨国企业AI面试系统部署时,遇到一个典型案例:候选人在视频面试中无意提到竞争对手产品名称,系统竟自动将该信息关联到企业知识库并生成竞品分析报告。这个看似"智能"的功能&…

2026/8/24 1:08:15 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/24 0:06:02 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/24 0:20:20 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/24 0:14:11 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/23 18:47:06 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/23 12:10:44 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/24 11:20:22 阅读更多 →