You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity C#玩家移动代码修复求助:角色仅向上移动无法左右移动

问题分析与修复方案

核心问题

你的代码存在两个关键问题导致异常:

  1. speed变量未初始化:声明了private float speed;但未赋值,默认值为0,导致左右移动速度为0,无法执行左右移动操作。
  2. 错误引入垂直输入:你仅需要实现左右移动,却读取了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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 11:38:40