Godot 2D 矩形碰撞形状 RectangleShape2D 完全指南:size 属性、物理配置与实战应用
文档教程游戏开发【免费下载链接】godot-docsGodot Engine official documentation项目地址https://gitcode.com/GitHub_Trending/go/godot-docs点击查看免费下载输出文章结束标记测试RectangleShape2D 是 Godot Engine 2D 物理系统中使用最广泛的碰撞形状之一它以矩形描述物体的碰撞边界通常挂载在CollisionShape2D节点下为Area2D、StaticBody2D、RigidBody2D或CharacterBody2D提供检测或实体碰撞能力。本指南将以 class_rectangleshape2d.rst 为骨架结合仓库内物理教程与相关类文档系统讲解其继承体系、核心size属性、性能定位、编辑器操作、代码创建方式以及可调用的基类方法帮助你准确选型并正确配置矩形碰撞体。RectangleShape2D 是什么类定义与继承体系依据官方类参考文档RectangleShape2D 的完整定义是A 2D rectangle shape used for physics collision.用于物理碰撞的 2D 矩形形状。它的继承链为RectangleShape2D Shape2D Resource RefCounted ObjectShape2D见 class_shape2d.rst是所有 2D 物理形状的抽象基类定义了一组通用的碰撞查询方法collide、collide_and_get_contacts等与属性custom_solver_biasResource意味着它是一个可复用、可保存、可在编辑器 Inspector 中直接编辑的资源类型RefCounted表示其生命周期由引用计数管理代码中创建后无需手动释放。文档明确指出其典型用途Usually used to provide a shape for a CollisionShape2D——即通过 CollisionShape2D 节点把形状挂到物理体上。官方在 physics_introduction.rst 中规定至少为一个物理对象分配一个 Shape2D 才能检测碰撞而最常见的方式就是把 CollisionShape2D 或 CollisionPolygon2D 作为物理体的直接子节点。注意间接子节点子节点的子节点会被忽略不会参与碰撞。核心属性 size 详解RectangleShape2D 只有一个专有属性类型属性默认值Vector2sizeVector2(20, 20)含义矩形的宽度与高度The rectangles width and height单位是像素。对应的 setter/getter 方法为set_size(value: Vector2)get_size() - Vector2默认值与使用建议默认Vector2(20, 20)是一个边长 20×20 像素的小矩形适合作为占位符。实际使用时通常需要根据精灵贴图尺寸调整。官方在 CharacterBody2D 教程 using_character_body_2d.rst 中的做法是为CharacterBody2D添加Sprite2D与CollisionShape2D在 Shape 属性中选择 New RectangleShape2D然后把矩形尺寸调整到刚好覆盖精灵图像。一个常见的坑是尺寸与缩放调整碰撞形状大小时应使用编辑器的尺寸手柄而不是Node2D的 Scale 手柄。官方在 physics_introduction.rst 中给出明确警告不要在编辑器中缩放碰撞形状Inspector 中的 Scale 应保持(1, 1)否则会产生意外的碰撞行为。Godot 4 迁移注意extents → size在 Godot 3 中该属性名为extents半宽高Godot 4 中改名为size完整宽高数值含义也由半边长变为全长。升级指南 upgrading_to_godot_4.rst 记录了这条变更RectangleShape2Dsextentsis nowsize因此从 Godot 3 迁移的代码原来set_extents(Vector2(50, 20))表示半宽 50、半高 20即整体 100×40迁移后应写作set_size(Vector2(100, 40))数值需加倍。这一点是实际项目中最容易踩的坑。性能定位与其他 2D 碰撞形状的对比官方类文档给出了明确的性能排序RectangleShape2D的碰撞检测速度较快。它比 CapsuleShape2D 快但比 CircleShape2D 慢。圆形碰撞见 class_circleshape2d.rst其中也交叉印证了该结论计算最廉价因为圆形只需比较圆心距离矩形只需比较 AABB 边界胶囊形则需要处理两端的圆弧开销更高。2D 形状整体性能参考来自 collision_shapes_2d.rst 与 class_shape2d.rst基础图元CircleShape2D、RectangleShape2D、CapsuleShape2D、SegmentShape2D、SeparationRayShape2D、WorldBoundaryShape2D速度快、行为可靠官方推荐动态物体RigidBody2D、CharacterBody2D优先使用基础图元ConvexPolygonShape2D凸多边形可表达任意凸形速度较慢ConcavePolygonShape2D凹多边形/三角网格最慢但最精确且只能用于 StaticBody2D不能用于 CharacterBody2D 或 RigidBody2D除非刚体模式为 Static。选型建议一个平台、墙、箱子、门等规则矩形物体用 RectangleShape2D 是精度与性能的最佳平衡若物体形状明显更接近圆形如硬币、轮子则应改用 CircleShape2D 换取更高性能角色等物体常由一个矩形加若干圆形组合表达。实战一在编辑器中创建矩形碰撞形状编辑器内创建流程以物理体 矩形碰撞为例在场景中创建物理体节点如StaticBody2D、CharacterBody2D或RigidBody2D右键该节点选择Add Child Node添加CollisionShape2D作为其直接子节点选中CollisionShape2D在 Inspector 的Shape属性下拉菜单中选择New RectangleShape2D使用 2D 视口顶部的尺寸手柄调整矩形大小使其贴合精灵或期望的碰撞范围见 physics_introduction.rst 中的示意图 player_coll_shape.webp展示了玩家碰撞形状覆盖在精灵上的典型配置。调试相关配置可参考 class_collisionshape2d.rstdebug_color编辑器中的显示颜色默认跟随ProjectSettings.debug/shapes/collision/shape_color在运行项目时可通过编辑器顶部的Debug Visible Collision Shapes开关查看所有碰撞形状的可视化轮廓便于验证矩形大小与位置是否正确。实战二通过代码创建与配置矩形碰撞形状GDScript 示例——动态为物理体挂载矩形碰撞extends StaticBody2D func _ready() - void: # 创建形状资源 var rect_shape : RectangleShape2D.new() rect_shape.size Vector2(64, 32) # 64 像素宽、32 像素高 # 创建碰撞形状节点并挂到物理体下 var col_shape : CollisionShape2D.new() col_shape.shape rect_shape add_child(col_shape)C# 等价实现using Godot; public partial class MyStaticBody2D : StaticBody2D { public override void _Ready() { var rectShape new RectangleShape2D(); rectShape.Size new Vector2(64, 32); var colShape new CollisionShape2D(); colShape.Shape rectShape; AddChild(colShape); } }要点RectangleShape2D作为 Resource 可以在多个节点间共享同一份形状资源可以被多个CollisionShape2D引用若需要运行时动态改变碰撞区域直接修改shape.size即可物理引擎会在下一步物理帧生效若希望临时禁用碰撞应通过CollisionShape2D.disabled实现官方文档建议使用set_deferred()修改该属性以规避物理引擎同步问题。继承自 Shape2D 的通用能力虽然 RectangleShape2D 自身只定义size但它完整继承了 Shape2D 的碰撞查询 API见 class_shape2d.rst这些方法接收本形状与其他形状各自的Transform2D非常适合做自定义碰撞检测、平台判定与移动预览方法说明collide(local_xform, with_shape, shape_xform) - bool判断两形状在当前位姿下是否碰撞collide_and_get_contacts(...) - PackedVector2Array返回接触点对成对交替排列本形状边界点、对方边界点用(B - A).normalized()求碰撞法线用(B - A).length()求穿透深度collide_with_motion(...) - bool判断若施加给定位移local_motion/shape_motion后是否会碰撞常用于移动预测collide_with_motion_and_get_contacts(...)预测位移后的接触点对get_rect() - Rect2返回形状的边界矩形对矩形形状而言即其自身范围draw(canvas_item, color)通过 RenderingServer 在 CanvasItem 上以指定颜色绘制实心形状典型用法在_physics_process()中调用collide_with_motion预先探测角色下一步是否会被矩形平台阻挡再决定移动或触发响应。另外Shape2D 的custom_solver_bias默认0.0可调整该形状参与接触分离时的求解偏向保持0时使用ProjectSettings.physics/2d/solver/default_contact_bias的全局默认值。一般场景无需修改。与 CollisionShape2D 及物理体的配合要点class_collisionshape2d.rst 中与矩形碰撞最相关的配置one_way_collision单向碰撞默认false启用后矩形只在指定方向的一侧检测碰撞常用于跳板式平台方向由one_way_collision_direction默认Vector2(0, 1)控制one_way_collision_margin默认1.0像素越大形状越厚对高速进入的碰撞体更友好。注意该特性在 Area2D 子节点上不生效disabled禁用后形状在世界中无任何效果。结合物理体类型来自 physics_introduction.rstArea2D矩形提供检测区域如触发器、危险区可发出 body_entered/exited 信号StaticBody2D矩形成为不可移动的实体地面、墙壁、箱子RigidBody2D矩形参与刚体动力学其尺寸还决定惯性矩官方注明需要激活的 CollisionShape2D 作为子节点才能正确计算惯性见 class_rigidbody2d.rstCharacterBody2D矩形作为角色的实体轮廓配合move_and_collide()/move_and_slide()实现移动与滑墙。性能注意事项与最佳实践综合官方文档 collision_shapes_2d.rst 的建议形状数量尽量少每个物理体的碰撞形状越少越好尤其对动态物体避免对碰撞形状做平移/旋转/缩放保持单一且未变换的形状可让引擎的 broad phase 算法直接淘汰不活跃的物理体缩小 narrow phase 的检测范围形状过多会导致 broad phase 失效碰撞检测整体变慢多形状间不必担心重叠同一物理体上的多个形状不会互相碰撞优先用图元表达小物体对于规则矩形物体一个 RectangleShape2D 通常就是最优解复杂大场景才考虑凸/凹多边形。相关资源类参考class_rectangleshape2d.rst、基类 class_shape2d.rst、挂载节点 class_collisionshape2d.rst教程2D 碰撞形状、物理入门、CharacterBody2D 使用教程迁移Godot 4 升级指南extents → size 变更示例官方 2D Pong Demo 与 2D Kinematic Character Demo 均使用了 RectangleShape2D可从 Godot 官方资源库获取赞分享文档教程游戏开发【免费下载链接】godot-docsGodot Engine official documentation项目地址https://gitcode.com/GitHub_Trending/go/godot-docs点击查看免费下载相关推荐Godot CircleShape2D 圆碰撞形状完全指南radius 参数、2D 物理性能与实战用法Godot CircleShape2D 圆碰撞形状完全指南radius 参数、2D 物理性能与实战用法 CircleShape2D 是 Godot 2D 物理文档教程游戏开发Godot 2D 碰撞形状节点 CollisionShape2D 完全指南属性详解、单向碰撞与性能调优Godot 2D 碰撞形状节点 CollisionShape2D 完全指南属性详解、单向碰撞与性能调优 本文围绕 Godot 官方文档仓库中的 Collisi文档教程游戏开发Godot 2D 物理碰撞完全指南CapsuleShape2D 胶囊碰撞体属性、约束与实战用法Godot 2D 物理碰撞完全指南CapsuleShape2D 胶囊碰撞体属性、约束与实战用法 导读 本文基于 Godot 官方文档godot docs中文档教程游戏开发上一篇11款游戏字体免费下载HoYo-Glyphs完整使用指南下一篇如何高效管理ComfyUI插件从零到精通的完整指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Spring Boot整合Quartz:动态定时任务从入门到实战

Spring Boot整合Quartz:动态定时任务从入门到实战

做定时任务这需求,十个项目里八个都有。可你要是真加了“动态”两个字,事情就没那么简单了:任务不再是写死在代码里调一次就行,而是要在运行过程中按业务随时加任务、改触发时间、暂停、恢复、删掉重来。我这次就基于 Spring Boot…

2026/10/13 20:42:02 阅读更多 →
A2A协议实战避坑指南:工具调用与多智能体协作的边界

A2A协议实战避坑指南:工具调用与多智能体协作的边界

1. 先搞清楚 A2A 到底在解决什么问题1.1 从一个真实的翻车现场说起去年下半年,我参与了一个内部效率工具链的整合项目。背景很简单:团队已经有了一套基于大模型的问答助手,能查文档、能写周报、能根据自然语言生成简单的数据查询。用起来还行…

2026/10/13 20:42:02 阅读更多 →
直接灰度变换与直方图均衡:从原理到 Python 实现

直接灰度变换与直方图均衡:从原理到 Python 实现

1. 从一张灰蒙蒙的照片说起:这个实验到底在解决什么问题1.1 对比度不足是图像处理的头号常见病看到"实验二 直接灰度变换 直方图均衡"这个题目,我猜你多半正在上数字图像处理课,或者正准备动手做第一次图像增强实验。说实话&#x…

2026/10/13 20:41:00 阅读更多 →

最新新闻

Win7 64位安装SQL Server 2008 R2全流程与避坑指南

Win7 64位安装SQL Server 2008 R2全流程与避坑指南

简介:这是一份针对Windows 7 64位环境安装微软数据库软件SQL Server 2008 R2的图文并茂超详细指南,采用PDF汇编形式呈现,面向数据库初学者、软件开发者以及需要在本机搭建数据库环境的运维人员。资源从安装前的IIS组件启用、Visual Studio 20…

2026/10/13 21:40:34 阅读更多 →
复现CCF-BDCI基金相关性预测:源码解析与实训改造指南

复现CCF-BDCI基金相关性预测:源码解析与实训改造指南

简介:一份面向人工智能、金融科技及数据科学方向的CCF-BDCI基金相关性预测完整实践包,适合高校学生、科研工作者或行业从业者作为毕业设计、课程设计、项目演示与初期立题参考,也便于入门者按项目路径学习典型机器学习预测流程。压缩包约715K…

2026/10/13 21:40:34 阅读更多 →
基于Django和Vue.js的租房推荐系统毕设全解析

基于Django和Vue.js的租房推荐系统毕设全解析

毕业设计这块,每年都有大量同学卡在同一个地方:不知道选什么题目、技术栈怎么搭、论文怎么跟代码配套、答辩PPT怎么整理。今天聊一个我个人觉得非常适合作为计算机专业毕设方向的完整方案——基于Django和Vue.js的租房推荐系统,重点包含推荐算…

2026/10/13 21:40:34 阅读更多 →
NOMA-OFDMA仿真详解:用户配对、功率分配与SIC实现

NOMA-OFDMA仿真详解:用户配对、功率分配与SIC实现

简介:面向无线通信系统研究与教学场景,MATLAB仿真资源包聚焦NOMA(非正交多址接入)与OFDMA(正交频分多址)的原理对比与融合分析,适合通信专业学生、科研人员以及需要快速搭建多址接入仿真环境的开…

2026/10/13 21:40:34 阅读更多 →
MySQL中文乱码终极解决方案:Workbench与命令行字符集配置全链路排查

MySQL中文乱码终极解决方案:Workbench与命令行字符集配置全链路排查

1. 项目概述:为什么MySQL Workbench和命令行里中文总是一堆问号或乱码?“MySQL Workbench 和mysql command之中的中文显示???解决!”——这个标题背后,藏着成千上万开发者、DBA、学生和数据分析…

2026/10/13 21:40:34 阅读更多 →
趣博思 AI|本硕博论文是一条能力梯度,AI 帮你找到你正站在哪一级台阶

趣博思 AI|本硕博论文是一条能力梯度,AI 帮你找到你正站在哪一级台阶

如果你把本科、硕士、博士三篇论文放在一起读,会发现它们根本不是同一种东西。本科生论文是一次 “规范训练”,证明你能完整走完一项研究流程;硕士论文是一次 “系统研究”,要求你在某个领域做出有一定深度的原创工作;…

2026/10/13 21:39:33 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →