用度表示角度

本文关键字:表示 | 更新日期: 2023-09-27 18:06:58

我想知道玩家当前行走的角度。我已经谷歌和得到这个工作

    turn = fAntToCamRotate;
    curDir = (curDir + turn) % 360; // rotate angle modulo 360 according to input
    RaycastHit hit;
    if (Physics.Raycast(target.transform.position, -curNormal, out hit))
    {
        curNormal = Vector3.Lerp(curNormal, hit.normal, 4 * Time.deltaTime);
        Quaternion grndTilt = Quaternion.FromToRotation(Vector3.up, curNormal);
     //GetComponent<CapsuleCollider>().transform.rotation = grndTilt * Quaternion.Euler(0, curDir, 0);
        target.transform.rotation = grndTilt * Quaternion.Euler(0, curDir, 0);
     /*
      * FIX THIS CODE TO KNOW THE ANGEL THE PLAYER IS WALKING ON!!!
     Vector3 test = Vector3.up;
     Vector3 test2 = hit.normal;
     float tester = Vector3.Dot(test.normalized, test2.normalized);
     Debug.Log(tester * (180 / Mathf.PI));
     */
    }

有了这个代码,玩家跟随地面,所以它不再看起来像他们跳跃小距离,当跑下一个斜坡。然而,我有两个问题,我希望有人能帮助我。

  1. 正如你在注释代码中看到的,我试图获得玩家当前行走的角度,并将其保存在一个变量中。我的问题是,我得到了这个非常奇怪的值,我不知道为什么。如果我的玩家从一个平坦的表面走到一个25度倾斜的斜坡上,那么这个数值就会从平坦(约55度)变为角度(约51度)。我一点也不明白。有人知道怎么把它变成更容易理解的学位吗?我想保存这个的原因是,这样我就可以判断是否有一个非常陡峭的斜坡,我希望玩家滑动。
  2. 我的第二个问题是,我有一个空的游戏对象与刚体和碰撞盒作为我的父角色。照相机是一个孩子。我想让身体根据斜坡转动,这样我就不会再往下跳了,但我想让镜头不跟随玩家的角度,有办法解决这个问题吗?

对于我的第二个问题,我想我可以在玩了一些之后自己解决它。但如果有人能帮我解答第一个问题我会很乐意的,我已经试了好几个小时都没有运气,我不知道为什么这个角度会给我这么奇怪的数字。

用度表示角度

计算角度是简单的三角学。

使用:

  angle  = arctan (y/x)

你可以用Math。如果从Unity来帮助你,它返回浮点数而不是double,不像。net Math.

弧度到度

    Angle * 180/pi