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

Unity 2D玩家移动代码含义解析求助:新手困惑代码逻辑

Unity 2D角色控制代码逐行解析

先把你贴的代码整理成规范格式:

if (horizontalInput > 0.01f)
    transform.localScale = Vector3.one;
else if (horizontalInput > -0.01f)
    transform.localScale = new Vector3(-1, 1, 1);
if (Input.GetKey(KeyCode.Space))
    body.velocity = new Vector2(body.velocity.x, speed);

下面逐段解释每个部分的作用:

1. 水平输入控制角色左右翻转

  • horizontalInput:这是Unity获取的水平方向输入值,对应键盘A/D键或左/右方向键,取值范围是**-1(左)到1(右)**。加0.01的判断是为了过滤输入的微小误差(比如摇杆轻微抖动)。
  • 第一行判断:当horizontalInput > 0.01f时,说明玩家按右键/D键,把角色的transform.localScale设为Vector3.one(即(1,1,1)),保持角色原本的向右朝向。
  • 第二行判断:这里大概率是笔误,正常逻辑应该是horizontalInput < -0.01f(向左移动时翻转)。按你贴的代码,这个条件会导致输入在-0.01到0.01之间(无有效输入)时,角色也会翻转成向左。如果要实现“向左移动时翻转”,建议改成horizontalInput < -0.01f。
  • transform.localScale:控制物体的缩放比例,把X轴设为-1,会让角色左右翻转,Y和Z轴保持1不变,避免角色拉伸变形。

2. 空格键触发跳跃

  • Input.GetKey(KeyCode.Space):检测玩家是否按住空格键。
  • body:这里是你提前获取的角色Rigidbody2D组件(2D物理刚体),用来控制角色的物理运动状态。
  • body.velocity = new Vector2(body.velocity.x, speed):设置刚体的速度,X轴保留当前的水平速度,Y轴设为你定义的speed值,让角色向上跳起(Unity 2D中Y轴代表上下方向)。

内容的提问来源于stack exchange,提问作者Yegor Tarasov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 15:31:49