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

Unity2D角色无法跳跃求助:按下上箭头键无反应

Unity2D角色跳跃异常问题修复方案

问题根源与修复步骤

  • OnCollisionEnter2D回调未触发:你的OnCollisionEnter2D()缺少Collision2D参数,Unity的碰撞回调方法必须带有该参数才会被系统调用。修正后的方法如下:

    private void OnCollisionEnter2D(Collision2D collision)
    {
        isGrounded = true;
    }
    
  • 跳跃逻辑顺序错误:你在检测跳跃条件前,先将isGrounded设为false,导致Input.GetKey(KeyCode.UpArrow) && isGrounded永远不成立。需移除该错误逻辑,改用碰撞退出回调处理地面状态。

  • 输入检测方式错误:使用Input.GetKey会在按住按键的每一帧都触发跳跃,导致角色持续上升;应改用Input.GetKeyDown,仅在按键按下的第一帧触发跳跃,符合正常跳跃逻辑。

  • 地面检测精度不足:建议给地面物体设置专属标签(如"Ground"),只在接触地面时修改isGrounded状态,避免碰到其他物体误触发。


修正后的完整代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerMovement : MonoBehaviour
{
    [SerializeField] private float moveSpeed;
    [SerializeField] private float jumpForce; // 单独设置跳跃力,与移动速度分离更合理
    private Rigidbody2D body;
    bool isGrounded;

    private void Awake()
    {
        body = GetComponent<Rigidbody2D>();
    }

    private void Update()
    {
        float horizontalInput = Input.GetAxis("Horizontal");
        // 水平移动处理
        body.velocity = new Vector2(horizontalInput * moveSpeed, body.velocity.y);

        // 角色翻转处理
        if (horizontalInput < -0.01f)
            transform.localScale = new Vector3(-1, 1, 1);
        else if (horizontalInput > 0.01f)
            transform.localScale = Vector3.one;
        
        // 跳跃处理:仅在按键按下瞬间且落地时触发
        if (Input.GetKeyDown(KeyCode.UpArrow) && isGrounded)
        {
            body.velocity = new Vector2(body.velocity.x, jumpForce);
            isGrounded = false; // 起跳后直接标记为非地面状态
        }
    }

    private void OnCollisionEnter2D(Collision2D collision)
    {
        if (collision.gameObject.CompareTag("Ground"))
            isGrounded = true;
    }

    private void OnCollisionExit2D(Collision2D collision)
    {
        if (collision.gameObject.CompareTag("Ground"))
            isGrounded = false;
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 13:55:14