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

Unity中如何计算CharacterController沿圆周从v2到v3的移动向量?

计算CharacterController从v2到v3的移动向量

配图说明:v1为圆周中心点,v2是角色当前在圆周外侧的位置,v3是v2绕v1旋转角度a后对应的外侧目标位置

分步计算方法

  • 获取圆心到当前位置的基础向量
    先计算从圆心v1指向角色当前位置v2的向量,并记录该向量的长度(即角色到圆心的固定距离):

    Vector3 centerToPlayer = v2 - v1;
    float distanceToCenter = centerToPlayer.magnitude;
    
  • 旋转方向向量得到目标位置的方向
    绕圆周平面的法向量(默认Unity水平面用Vector3.up)旋转角度a,得到指向v3的单位方向向量:

    // 若需要逆时针旋转,直接传入正数a;顺时针则传入负数a
    Vector3 targetDir = Quaternion.AngleAxis(a, Vector3.up) * centerToPlayer.normalized;
    
  • 计算目标位置v3
    用旋转后的方向向量乘以之前记录的距离,加上圆心坐标得到v3:

    Vector3 v3 = v1 + targetDir * distanceToCenter;
    
  • 得到最终移动向量
    移动向量即为目标位置与当前位置的差值:

    Vector3 moveVector = v3 - v2;
    

实际使用提示

  • 如果旋转平面不是水平面,需要替换Vector3.up为圆周平面的法向量(可通过平面内两个向量叉乘计算得到)。
  • 若需要平滑移动,可结合Time.deltaTime和移动速度调整:
    float moveSpeed = 5f;
    characterController.Move(moveVector.normalized * moveSpeed * Time.deltaTime);
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 03:39:59