Go to file
p71924506 3c157e7772 基本完结 2024-09-16 22:01:41 +08:00
.idea/.idea.2ddemo/.idea 基本完结 2024-09-16 22:01:41 +08:00
art 上传demo 2024-09-11 22:01:21 +08:00
fonts 上传demo 2024-09-11 22:01:21 +08:00
.gitattributes 上传demo 2024-09-11 22:01:21 +08:00
.gitignore 上传demo 2024-09-11 22:01:21 +08:00
2ddemo.csproj 上传demo 2024-09-11 22:01:21 +08:00
2ddemo.sln 上传demo 2024-09-11 22:01:21 +08:00
Hud.cs 基本完结 2024-09-16 22:01:41 +08:00
Main.cs 基本完结 2024-09-16 22:01:41 +08:00
Mob.cs update player,mob,main code and scn in project 2024-09-15 23:07:33 +08:00
Player.cs update player,mob,main code and scn in project 2024-09-15 23:07:33 +08:00
hud.tscn 基本完结 2024-09-16 22:01:41 +08:00
icon.svg 上传demo 2024-09-11 22:01:21 +08:00
icon.svg.import 上传demo 2024-09-11 22:01:21 +08:00
main.tscn 基本完结 2024-09-16 22:01:41 +08:00
mob.tscn 基本完结 2024-09-16 22:01:41 +08:00
player.tscn update player,mob,main code and scn in project 2024-09-15 23:07:33 +08:00
project.godot update player,mob,main code and scn in project 2024-09-15 23:07:33 +08:00
readme.md update player,mob,main code and scn in project 2024-09-15 23:07:33 +08:00

readme.md

项目介绍

自己研究的游戏小demo

目前只是跟着文档撸demo阶段不要在意不要在意

JUST FOR FUN! XD

Godot 游戏引擎 中,RigidBody2DArea2D 是两种常用的 2D 物理节点,尽管它们都可以检测碰撞,但它们的用途和行为大不相同。让我们深入了解它们的区别和用途。

1. RigidBody2D

RigidBody2D 是 Godot 中的物理对象,它主要用于模拟真实的物理行为。它受物理引擎的影响,会根据力、碰撞和重力等物理规则进行移动。

特性:

  • 物理受控RigidBody2D 是受 Godot 物理引擎完全控制的对象,你不能直接设置它的位置或旋转,必须通过施加(如重力、推力、碰撞等)来间接控制它的运动。
  • 运动模式RigidBody2D 有几种不同的模式,允许你定义它的行为:
    • Rigid刚体:完全受物理引擎控制。适合用来模拟真实的物理物体,比如箱子、石头等。
    • Static静态:不受物理引擎影响,用于不动的物体,如地面或墙壁。
    • Character角色:介于刚体和运动体之间,适合玩家角色的控制,它受物理影响,但能更直接地控制移动。
    • Kinematic运动体:它可以手动控制运动,通常用于玩家角色、敌人等。

使用场景:

  • 模拟物理效果:用于需要真实物理互动的对象,比如物体掉落、子弹的反弹、角色的移动等。
  • 碰撞反应:当 RigidBody2D 与其他物体碰撞时,会根据物理规则(如速度、质量、摩擦等)产生反应。

示例:

var force = new Vector2(100, 0); // 向右施加一个推力
ApplyCentralImpulse(force); // 给刚体施加瞬间力

2. Area2D

Area2D 是一种专门用于检测区域内的物体触发事件的节点,它本身不受物理引擎的影响,不模拟物理运动。Area2D 更像是一个逻辑区域,它可以用来检测何时有对象进入或离开区域,并触发相关的信号。

特性:

  • 区域检测Area2D 可以检测物体是否进入了其定义的区域,可以用于触发事件,比如检测玩家是否进入危险区、道具拾取区等。
  • 信号驱动Area2D 主要依靠信号机制来处理事件,常用信号包括:
    • body_entered: 当一个物体进入区域时触发。
    • body_exited: 当一个物体离开区域时触发。
  • 影响区域内的物体Area2D 可以设置一些影响区域内物体的参数,比如重力伤害或其他自定义的游戏机制。

使用场景:

  • 触发事件:用于触发一些基于位置或状态的事件,比如玩家进入某个区域触发机关,或者敌人进入警戒范围触发警报。
  • 无物理交互Area2D 本身不会受到物理引擎的影响,因此它适用于逻辑处理,而不是物理碰撞反应。

示例:

func _on_Area2D_body_entered(body):
    if body.name == "Player":
        print("Player entered the area")

3. RigidBody2D 和 Area2D 的主要区别

  • 物理控制RigidBody2D 是一个受物理引擎控制的物体,模拟真实的物理行为;Area2D 则不受物理控制,只是用于检测区域内的物体和触发事件。
  • 碰撞处理RigidBody2D 主要用于物理碰撞检测,模拟物体之间的交互;Area2D 用于区域检测,它不会在物理上与物体产生互动,而是用来检测物体进入、离开或执行某些逻辑。
  • 信号触发Area2D 主要通过信号处理逻辑事件,而 RigidBody2D 更多用于物理反应的模拟。

4. 实际应用场景比较

用途 RigidBody2D Area2D
物理模拟 模拟真实物理行为,如物体掉落、碰撞、反弹 不用于物理模拟
碰撞检测 用于物理碰撞反应,如刚体之间的相互作用 用于检测物体进入/离开特定区域
运动控制 受物理引擎控制,通过力或冲量移动 不用于直接控制物体运动,适合触发逻辑事件
应用场景 角色、敌人、道具等需要受物理影响的对象 检测区域(触发器)、重力场、道具拾取区等

总结

  • RigidBody2D:用于需要物理交互的物体,受物理引擎控制,适合模拟现实世界的物理行为。
  • Area2D:用于逻辑区域检测,适合处理物体进入、离开的逻辑,不受物理引擎影响。