Unity C#玩家移动代码修复求助:角色仅向上移动无法左右移动
问题分析与修复方案
核心问题
你的代码存在两个关键问题导致异常:
speed变量未初始化:声明了private float speed;但未赋值,默认值为0,导致左右移动速度为0,无法执行左右移动操作。- 错误引入垂直输入:你仅需要实现左右移动,却读取了
Vertical轴输入并加入移动方向,这会让角色响应上下键输入(甚至可能因输入轴漂移问题持续向上移动)。
修复后的代码
using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerMovement1 : MonoBehaviour { // 初始化移动速度,可在Unity Inspector面板实时调整 [SerializeField] private float speed = 5f; void Update() { // 仅读取水平方向输入 float horizontalInput = Input.GetAxis("Horizontal"); // 构建仅包含水平分量的移动方向,固定y轴为0 Vector2 direction = new Vector2(horizontalInput, 0f); transform.Translate(direction * speed * Time.deltaTime); } }
修复说明
- 给
speed添加[SerializeField]并初始化默认值,既可以在代码中设置基础速度,也能在Unity编辑器的Inspector面板中灵活调整,方便调试。 - 移除
verticalInput相关代码,将移动方向的y分量固定为0,彻底关闭垂直方向移动,确保角色仅执行左右移动。 - 保留
Time.deltaTime保证移动速度不受帧率波动影响,这部分你的代码逻辑是正确的。
内容的提问来源于stack exchange,提问作者Adeline Haun
相关产品推荐
相关产品推荐

