Godot中和涉及物理系统的节点一般都有一个用于控制碰撞检测的层次的属性。在不同节点中名字可能不一样,但是都以这样的形式在检视面板中示人,比如选中Player场景中的CharacterBody2D节点打开Collision部分: CharacterBody2D的这两个属性实际上是来自CollisionObject2D的`collision_layer`(碰撞层,下文简称layer或层)和`collisi...
func apply_force(): $RigidBody2D.apply_central_impulse(Vector2(100, 0)) KinematicBody2D:由于你提到的 CharacterBody2D,可能是指 KinematicBody2D。这是一个可以通过代码控制移动的节点,常用于角色控制。 # 移动角色 func move_character(): var velocity = Vector2(100, 0) move_and_slide(velocity) Cha...
2、给staticbody创建sprite和collsion 其中staticbody会表示sprite的vertex不会经常变动,会放到基本不修改的显存的位置保存。 collision会在物理碰撞中添加一个碰撞体。具体参考godot的开源代码,因为这玩意没有直接套用常用的2d碰撞体,而是自己改了改。 实际上staticbody在编程上面之属于node的一个参数,godot把它设置为专门...
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...
选择CollisionShape2D, 右上角 检查器 --> Shape --> 新建CircleShape2D 把蓝色小圆圈调整到合适的大小, 把骑士拖到x轴上面 把top nodeCharacterBody2D重命名为 Player, 然后保存到 scenes 文件夹 回到Game 场景, 把 Player 拖进去 添加一个 Camera 节点, 来控制显示的内容 ...
切换至Player场景,为Player添加脚本。这个以CharacterBody2D:Basic Movement为模板的脚本会为我们实现方向键移动和空格键跳跃。 2. 碰撞体 这时候运行游戏,Player会直接坠落,我们可以在场景中添加一个碰撞体。 在窗口上方的菜单栏中切换回至2D模式,Game场景,①给Game添加一个子节点StaticBody2D。②给这个节点添加Collis...
CharacterBody2D/3D 需要在代码中“手动”移动的物理体(玩家),并且可以自动检测碰撞。 CollisionShape2D/3D 用于物理世界中的碰撞形状,定义物体的碰撞体积和物理属性。 RigidBody2D/3D 响应力的物理体,其运动由引擎自动计算,例如它默认受重力影响。 StaticBody2D/3D 检测静态物体的碰撞,可以阻挡其他物理对象,非常适合...
7. CharacterBody2D节点旁有一个黄色的感叹号,鼠标移至感叹号上会提示节点没有形状,建议添加“碰撞体”。给CharacterBody2D添加一个CollisionShape2D节点(可以点击Scene窗口中的加号,或者在Scene窗口中的CharacterBody2D上右键新建子节点【快捷键Ctrl+A】)。这里选择New CircleShape2D。调整一下Collision的位置和大小。
2D 阴影必须要有 LightOccluder2D 才能形成,这个节点需要靠多边形来匹配 sprite 的形状。此外,还具有两个属性: SDF Collision:用于着色器,不过开启了也不会影响性能,所以干脆默认开启。 Occluder Light Mask:与光源的 Item Cull Mask 一起控制物体是否会形成阴影。
我们可以直接把根节点改成CharacterBody2D,因为我们的脚本在根节点上,很多代码也是从根节点的角度来说的。 CharacterBody2D和Area2D一样是CollisionObject的子类,它也需要一个CollisionShape。修改完根节点类型之后它也会提示需要一个形状。这里我们不再需要Area2D,所以直接把它的CollisionShape移到外面,让它成为Character...