用Godot 开发过 2D 游戏的朋友应该熟悉 Area2D+CollisionShape2D 这对组合。Godot 对碰撞管理主要依靠的就是 CollisionShape2D(以及对应的 3D 版本),它用于规定碰撞的形状和尺寸。游戏中玩家、地形、敌人都需要一个对应的 CollisionShape2D 才能和屏幕上的元素交互。除了碰撞之外,CollisionShape2D 的另一个用法就是用...
在碰撞节点 CollisionShape2D 节点中,我们可以找到这样的设置: One Way Collision。 勾选它后,我们可以在场景里看到,节点出现了一个箭头。 注意,箭头朝向哪边,表示箭头来源方向(也就是反方向)那个面为碰撞面。如图则为上表面。 如果需要调整方向,只需要做旋转,设置 Rotation Degree 的值即可,如180度,碰撞面将由...
1.3 为 Mob 节点添加子节点 AnimatedSprite、CollisionShape2D、VisibilityNotifier2D,设置为无法选中。 1.4 设置节点 将RigidBody2D的Gravity Scale属性设置为0,这将防止Mob随重力掉落。 将RigidBody2D的CollisionObject2D——Collision——Mask的复选框去除。这个选项用于扫描物理碰撞,去除复选框以确保Mob不会互相碰撞。
选中Area2D节点,然后给它添加一个CollisionShape2D作为子节点。添加之后,这个CollisionShape2D又有一个感叹号,说还是没有形状。我们需要给它的Shape(形状)属性给值才行。 这里有多种选择。它们代表了不同形状的Shape资源。当然你会说我们的狐狸是“狐狸形状”的该选什么。实际上定义碰撞形状的节点除了CollisionShape还有...
新建场景,比如叫它KillArea(你叫它KillZone我觉得也可以)。由于它没有过多的花哨功能,一般来说也不会移动,所以我们可以直接把根节点改成Area2D。和之前一样,我们需要给它添加一个CollisionShape2D,具体的形状创建一个矩形就好。场景很简单,就这样: 把它直接放到我们的主场景中,调整它的大小,让它的宽度足以覆盖住...
Area2D/3D 检测空间中的物体进入、离开和停留等事件,可以用于触发器和区域控制。 CharacterBody2D/3D 需要在代码中“手动”移动的物理体(玩家),并且可以自动检测碰撞。 CollisionShape2D/3D 用于物理世界中的碰撞形状,定义物体的碰撞体积和物理属性。 RigidBody2D/3D 响应力的物理体,其运动由引擎自动计算,例如它默认...
选择CollisionShape2D, 右上角 检查器 --> Shape --> 新建CircleShape2D 把蓝色小圆圈调整到合适的大小, 把骑士拖到x轴上面 把top nodeCharacterBody2D重命名为 Player, 然后保存到 scenes 文件夹 回到Game 场景, 把 Player 拖进去 添加一个 Camera 节点, 来控制显示的内容 ...
When running physics in a separate thread and updating aCollisionShape2Dor aCollisionShape3D(eg. changing the transform) in_physics_process, the physics server enters an infinite loop and spams the console with: ERROR: Condition "p_elem->_root != this" is true. ...
在模拟器上模拟屏幕点击需要在项目设置中: 输入设备-指点 中勾选用鼠标模拟触摸 十三. 转化为字符串 简单的转化字符串方法: str(int) 十四. 碰撞检测 如果是Node2D节点则可以添加Area2d 将Area2d下方添加CollisionShape2D 并用信号body_entered连接被碰撞目标即可...
没有碰撞形状的碰撞节点不会参与游戏中的碰撞交互,碰撞形状主要分为:CollisionShape2D和CollisionPolygon2D两种,应用非常简单,在场景中表现为蓝色区域,游戏运行后并不会显示,可以在 Debug 调试中打开显示效果,在之前的文章中已经详细讨论过。 这里重点要提到的概念是碰撞图层以及碰撞图层掩码。在使用碰撞图层之前,你必须...