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

Unity中CharacterController移动与跳跃功能冲突无法正常生效问题

Unity角色同时移动+跳跃功能异常修复方案

问题根源

两套代码使用了互不兼容的位移实现逻辑:

  • 移动脚本直接修改transform属性实现位移和旋转,绕过了CharacterController的碰撞和位移校验逻辑
  • 跳跃脚本使用CharacterController.Move()方法实现Y轴位移,两种位移方式会互相覆盖位置数据,导致移动异常、接地检测失效等问题

修复方案

将移动和跳跃的位移逻辑统一使用CharacterController.Move()实现,你可以直接用下面的合并后的单脚本替换原来的两个脚本:

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

public class PlayerController : MonoBehaviour  
{  
    // 移动参数
    public float speed = 30f;              
    public float turnSpeed = 80f;
    // 跳跃参数
    private float verticalVelocity;  
    private float gravity = 14.0f;  
    private float jumpForce = 10.0f;  
    
    private CharacterController controller;  
    private float horizontalInput;          
    private float verticalInput;
    
    void Start()  
    {  
        controller = GetComponent<CharacterController>();  
    }  
    
    void Update()
    {
        // 输入采集
        horizontalInput = Input.GetAxis("Horizontal");
        verticalInput = Input.GetAxis("Vertical");
        
        // 旋转逻辑无冲突,可以保留
        transform.Rotate(turnSpeed * Time.deltaTime * Vector3.up * horizontalInput);
        
        // 跳跃与重力逻辑
        if (controller.isGrounded)  
        {  
            verticalVelocity = -gravity * Time.deltaTime;  
            if (Input.GetKeyDown(KeyCode.Space))  
            {  
                verticalVelocity = jumpForce;  
            }  
        }  
        else  
        {  
            verticalVelocity -= gravity * Time.deltaTime;  
        }  
        
        // 合并前后移动和Y轴位移,统一用CharacterController处理
        Vector3 moveVector = transform.forward * speed * verticalInput + new Vector3(0, verticalVelocity, 0);
        controller.Move(moveVector * Time.deltaTime);
    }
}

注意事项

  • 请确保你的角色对象上已经挂载了CharacterController组件,根据你的角色模型尺寸调整组件的半径、高度、中心偏移参数
  • 可以根据手感调整脚本暴露的speed、turnSpeed、jumpForce、gravity参数,适配项目需求即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 13:54:05