CharacterBody2D主要有两个用来移动的方法,一个叫move_and_slide,一个叫move_and_collide(这个方法实际上来自它的基类PhysicsBody2D)。从名字上我们可以了解到,前者在碰到障碍物时(根据运动速度的情况)会滑走,而后者发生碰撞后会停止移动。 说白了,move_and_slide更加简单粗暴。它依靠的是CharacterBody2D的velocity属...
一般都是以 CharacterBody2D 开始,配上 Sprite2D 和 CollisionShape2D 两个子节点。 然后在项目设置里设置 InputMap。 在_physics_process里改变 velocity,然后调用 move_and_slide() 。 4.1.2 朝向鼠标的方向 调用look_at() 函数,可以改变节点的旋转方向,参数使用鼠标的位置,那就变成了看向鼠标的方向了。 4.1...
新建场景,根节点CharacterBody2D,重命名为Enemy 根节点下添加一个Node2D节点并改名为Graphics 添加一个Sprite2D节点 根节点下添加一个CollisionShape2D节点来定义碰撞形状 根节点下添加一个AnimationPlayer节点用来定义动画 根节点下添加一个StateMachine节点用来定义具体的逻辑 保存场景命名为enemy在根节点添加一个脚本,用来...
每次process执行时,先将velocity归零,然后再判断按键移动; extends CharacterBody2D var speed=400func _process(delta:float)->void:velocity=Vector2.ZERO var x=Input.get_axis("ui_left","ui_right")var y=Input.get_axis("ui_up","ui_down")if!velocity:velocity+=Vector2(x,y).normalized()*speed*...
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...
根据velocity 移动该物体。该物体如果与其他物体发生碰撞,则会沿着对方滑动(默认只在地板上滑动),不会立即停止移动。 如果对方是 CharacterBody2D 或 RigidBody2D,还会受到对方运动的影响。可以用于制作移动、旋转的平台,也可用于推动其他节点。 发生滑动碰撞时会改变 velocity。要获取最后一次碰撞,请调用 get_last_slid...
CharacterBody2D 提供了 move_and_slide ,通过 velocity.x 或者 velocity.y 来控制移动 另外还可以通过 process里用 delta*speed 来进行移动 十二. 鼠标点击 可以通过_input(event): 来监听点击事件 在模拟器上模拟屏幕点击需要在项目设置中: 输入设备-指点 中勾选用鼠标模拟触摸 ...
extends CharacterBody2D const SPEED = 130.0 const JUMP_VELOCITY = -300.0 @onready var animated_sprite_2d: AnimatedSprite2D = $AnimatedSprite2D func _physics_process(delta: float) -> void: # Add the gravity. if not is_on_floor():
重力和时间差delta的乘积来更新velocity的垂直方向上的速度 Main场景的script extends CharacterBody2D# ProjectSettings.get("physics/2d/default_gravity") 拿到项目设置中的默认重力值# as float 转换为浮点数# := 是一种变量声明和赋值的操作符,通常被称为「分配运算符」或「绑定运算符」它用于在声明变量的同时...
根节点依然用方便的CharacterBody3D,但是和玩家不同,就目前来说不需要给它摄像机。添加脚本即可。 由于我们不需要控制敌人,所以脚本模板中只需要留下重力相关的代码即可。 看向玩家 这里说的行为其实算是敌人AI的一部分。要实现敌人的AI,其实没那么简单。我们也没法在一篇文章中说完(可能“永远”也说不完)。我们...