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

Unity 2D平台游戏:Composite Collider碰撞墙体致跳跃失效求助

2D平台游戏Composite Collider 2D引发跳跃异常的解决方案

问题复盘

使用Unity Tile Palette开发2D平台游戏时,为优化性能将单瓦片碰撞体替换为Composite Collider 2D后,玩家接触垂直墙体时Rigidbody.velocity.y出现异常数值,导致跳跃逻辑失效。以下是针对性的解决办法:


  • 检查碰撞组件核心设置

    1. 确保Tilemap Collider 2D的Used By Composite选项已勾选,Composite Collider 2D的Geometry Type设为Outlines(避免网格模式下的边缘碰撞误差),且两者均未勾选Is Trigger。
    2. 打开Tile Palette编辑垂直瓦片的碰撞形状,保证碰撞体为规整矩形,无多余顶点或不规则边缘——这类异常碰撞形状是导致额外受力的常见原因。
  • 调整玩家Rigidbody2D参数

    1. 将Collision Detection设为Continuous Dynamic,减少高速移动时的碰撞穿透引发的速度异常。
    2. 适当调高Linear Drag(比如设为0.5~1),抑制碰撞产生的不必要速度积累;同时确认Gravity Scale未被其他脚本意外修改。
  • 重构跳跃判断逻辑
    放弃依赖Rigidbody.velocity.y判断是否可跳跃,改用地面检测触发器:

    [SerializeField] private Transform groundCheckPoint;
    [SerializeField] private LayerMask groundLayer;
    private Rigidbody2D rb;
    private bool isGrounded;
    
    private void Awake() => rb = GetComponent<Rigidbody2D>();
    
    private void FixedUpdate()
    {
        // 以检测点为中心,用小范围圆形判定是否接触地面
        isGrounded = Physics2D.OverlapCircle(groundCheckPoint.position, 0.15f, groundLayer);
    }
    
    private void Update()
    {
        if (Input.GetButtonDown("Jump") && isGrounded)
        {
            rb.velocity = new Vector2(rb.velocity.x, 8f); // 替换为你的跳跃力数值
        }
    }
    

    这种方式不受Y轴异常速度影响,仅以物理接触判定跳跃权限。

  • 修正碰撞时的速度异常
    在OnCollisionStay2D中针对垂直墙体单独处理速度,仅限制X轴,保留Y轴正常速度:

    private void OnCollisionStay2D(Collision2D collision)
    {
        if (collision.gameObject.CompareTag("VerticalWall"))
        {
            // 清空X轴速度,避免墙体挤压产生的异常力影响Y轴
            rb.velocity = new Vector2(0, rb.velocity.y);
        }
    }
    

    若仍存在微小Y轴抖动,可在FixedUpdate中平滑修正:

    private void FixedUpdate()
    {
        if (!isGrounded && Mathf.Abs(rb.velocity.y) < 0.2f)
        {
            rb.velocity = new Vector2(rb.velocity.x, 0f);
        }
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 14:05:30