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

Unity 3D角色画线跳跃问题:X轴无响应求代码修正方案

代码修正建议

你的问题核心是完全没用到画线的方向信息,直接固定用Vector3.up施力,所以不管画什么方向的线,角色只会向上跳。以下是修正方案:

关键修改点

  • 从画线对象中提取线条的起点和终点,计算出实际的跳跃方向向量
  • 移除Time.deltaTime(ForceMode.Impulse是瞬间冲量,不需要乘时间增量)
  • 用计算出的方向向量替代固定的Vector3.up

修正后的代码

if (other.gameObject.CompareTag("Line"))
{
    LineRenderer lineRenderer = other.GetComponent<LineRenderer>();
    if (lineRenderer != null)
    {
        // 获取线条的起点和终点(世界空间坐标)
        Vector3 startPos = lineRenderer.GetPosition(0);
        Vector3 endPos = lineRenderer.GetPosition(1);
        // 计算归一化的跳跃方向向量(消除线条长度的影响)
        Vector3 jumpDir = (endPos - startPos).normalized;
        
        // 如果是类2D的3D视角(比如只允许X/Y轴移动),可以屏蔽Z轴分量
        // jumpDir = new Vector3(jumpDir.x, jumpDir.y, 0);
        
        // 施加瞬间冲量力,无需乘Time.deltaTime
        rb.AddForce(jumpDir * speed, ForceMode.Impulse);
    }
    // Destroy(other.gameObject);
}

额外说明

  1. 确保画线对象上挂载了LineRenderer组件,并且已经设置了至少两个点(起点和终点)
  2. 如果你的3D场景是横向滚动视角,记得屏蔽Z轴方向的力,避免角色偏离平面
  3. ForceMode.Impulse模式下,力的大小是瞬间生效的,乘以Time.deltaTime会导致力的大小随帧率波动,必须去掉

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 00:20:26