GDScript中KinematicBody旋转后无法沿朝向移动的解决方法
修复第三人称控制器朝向移动问题
你的问题出在直接使用世界空间的X轴(vel.x)控制前进,角色旋转后自身朝向的前进方向已和世界X轴不一致,需要改用角色局部空间的方向向量计算移动。
修改后的代码如下:
func _physics_process(delta): vel = Vector3.ZERO # 重置整个速度向量 if Input.is_action_pressed("move_forward"): # 使用角色自身的局部X轴方向(随旋转自动更新)计算移动 vel += transform.basis.x * SPEED * delta if Input.is_action_pressed("turn_left"): rotate_y(deg2rad(ROTATION_INTENSITY)) move_and_collide(vel)
关键修改说明:
- 将
vel.x = 0改为vel = Vector3.ZERO:确保每帧完全重置速度,避免残留其他方向的速度干扰。 - 替换
vel.x += SPEED * delta为vel += transform.basis.x * SPEED * delta:transform.basis.x是角色局部X轴在世界空间中的方向向量,角色旋转后该向量会同步更新朝向,移动方向自然跟随角色当前朝向。
内容的提问来源于stack exchange,提问作者isaiah day
相关产品推荐
相关产品推荐

