Godot 2D中如何参照水平移动逻辑实现玩家Y轴垂直移动
Godot垂直移动实现方案
完全可以复用你现有水平移动的代码风格,不需要调整整体逻辑结构,只要把向量的垂直轴分量按相同的输入差值逻辑补全即可。
对齐原有风格的实现代码
首先提前在项目输入映射配置中添加两个动作绑定,和你已有的move_left、move_right配置逻辑保持一致:
move_up:绑定上方向键、W键等你需要触发上移的按键move_down:绑定下方向键、S键等你需要触发下移的按键
之后直接替换原有移动代码即可,整体写法和你之前的水平移动逻辑完全统一:
var direction := Vector2( Input.get_action_strength("move_right") - Input.get_action_strength("move_left"), Input.get_action_strength("move_down") - Input.get_action_strength("move_up") ) velocity = speed * direction # 如果需要斜向移动速度和直向移动速度一致,取消下一行注释即可 # direction = direction.normalized() velocity = move_and_slide(velocity)
注意事项
- 上述代码完全匹配原有水平移动的响应手感,水平、垂直移动的速度、输入响应表现完全一致,不会出现手感割裂
- Godot 2D坐标系默认Y轴正方向朝向屏幕下方,因此垂直轴采用「下移输入强度减去上移输入强度」的写法,和水平轴「右移减左移」的逻辑完全对应,不会出现按键方向反转的问题
- 该写法仅适用于无重力影响的垂直移动场景:比如俯视角游戏八方向移动、飞行类游戏上下移动、平台游戏爬梯子状态移动。如果是常规平台跳跃的受重力下落/跳跃逻辑,不能直接套用这个匀速移动写法,需要单独叠加重力、跳跃冲量的计算逻辑。
内容的提问来源于stack exchange,提问作者World Of Gaming WOG
相关产品推荐
相关产品推荐

