添加CharacterBody2D 作为父节点,命名为 Player 添加子节点 Area2D,在稍后连接 area_entered 信号,用于捡起物品 添加子节点AnimatedSprite2D,显示玩家,新建 SprieteFrame,在动画编辑器中,将玩家精灵图拖动到右侧编辑区 添加子节点 CollisionShape2D,用于碰撞,设置 shape 为 CapsuleShape,在2D 编辑器中调整大小覆盖纹理 添...
• body_shape_exited(body_rid, body, body_shape_index, local_shape_index) :当该角色的形状与其他 PhysicsBody2D 或 TileMap 的形状碰撞结束时发出。 使用示例以下是一个简单的使用 CharacterBody2D 创建玩家角色的示例: 1. 创建角色节点: • 创建一个 CharacterBody2D 节点。 • 添加一个 CollisionSha...
$RigidBody2D.apply_central_impulse(Vector2(100, 0)) KinematicBody2D:由于你提到的 CharacterBody2D,可能是指 KinematicBody2D。这是一个可以通过代码控制移动的节点,常用于角色控制。 # 移动角色 func move_character(): var velocity = Vector2(100, 0) move_and_slide(velocity) CharacterBody2D 节点: Cha...
extends CharacterBody2D@onready var animated_sprite_2d: AnimatedSprite2D = $AnimatedSprite2D@onready var collision_shape_2d_2: CollisionShape2D = $CollisionShape2D2const speed = 130.0var current_speed = speedvar acceleration = 10var jump_count = 1const jump_velocity = -300.0var gravity = Projec...
如果是刚体rigidbody和静态体staticBody倒是有覆盖物理材质physics_material_override,新建一个材质可以设置弹跳率。人物体需要自己写逻辑了4的写法会有些不同请注意!看3的文档有翻译,切换到4也行https://docs.godotengine.org/zh_CN/stable/tutorials/physics/using_kinematic_body_2d.html#detecting-collisions或者你...
关于前面提到CharacterBody2D的velocity属性,在日常会话中,speed和velocity我们都说“速度”。不过这两个概念虽然相互关联但是也有区别。回忆一下中学上物理课时老师说的“速度”和“速率”之间的区别。speed就是速率,它是一个标量(一个数字类型的值);velocity是速度,是一个向量(Vector2)。
一般情况, 简单的曲线运动使用PathFollow2D即可, 但是PathFollow2D也有很多局限性: 运动过程中直接改变节点的位置, 并不会做物理逻辑处理 运动的节点需要挂在PathFollow2D下, 如果节点需要有多个曲线运动路径, 需要切换父节点 运动过程无法直观的控制速度 直接上代码: extends CharacterBody2D # --- # 角色曲线运动 ...
CharacterBody2D 提供了 move_and_slide ,通过 velocity.x 或者 velocity.y 来控制移动 另外还可以通过 process里用 delta*speed 来进行移动 十二. 鼠标点击 可以通过_input(event): 来监听点击事件 在模拟器上模拟屏幕点击需要在项目设置中: 输入设备-指点 中勾选用鼠标模拟触摸 ...
move = characterBody2D.Velocity; move.Y += (float)(MyGodotSetting.GRAVITY * delta);if(MyGodotSetting.IsActionJustPressed(MyGodotSetting.InputMapEnum.Jump) && characterBody2D.IsOnFloor()) { printHelper.Debug("跳跃"); move.Y = JUMP_VELOCITY; ...
public partial class Bullet : CharacterBody2D { public short Speed = 500; public short Y_point = 70; public short y_vel = -1; public override void _Process(double delta) { Velocity = new(0, Speed * y_vel); MoveAndSlide();