使用C#将弧度转换为度

时间:2019-12-17 11:34:55

标签: c# unity3d math game-physics physics

我正在用C#在Unity中创建一个小型游戏,不允许使用任何内置的物理或对撞机。我所拥有的是一个上面有重量对象的平台。使用箭头键可以倾斜平台角度。然后,顶部的重量应相应于给定的倾斜角做出反应。我已经计算出了所有的摩擦力,最大摩擦力,法向力a.s.o.无效的是,当您按一个键来更改倾斜度时,作用在对象上的力应该相应地改变,如果作用在配重上的力大于最大摩擦力,则配重应该移动。这是我的代码的简化示例。

public float m = 35;

public float µ = 0.15f;

public float g = 9.82f; //(N/kg)

public float N;

public double deg = 0;

Fmax = m * g * µ;

if (Input.GetKeyDown(KeyCode.UpArrow)) {
   deg++;
   N = m * g * µ * (Math.Cos(deg) * (180.0 / Math.PI));
   platform.transform.Rotate(0, 0, deg, Space.Self);

} else if (Input.GetKeyDown(KeyCode.DownArrow)) {
   deg--;
   N = m * g * µ * (Math.Cos(deg) * (180.0 / Math.PI));
   platform.transform.Rotate(0, 0, deg, Space.Self);
}

if(N > Fmax) {
 // Do the rest of the code
}

我认为问题与Math.Cos(deg)将deg转换为弧度有关,但是我尝试使用(180.0 / Math.PI)将reg转换为deg。我可以在计算器上使用所有功能,但不能在代码中使用。

3 个答案:

答案 0 :(得分:2)

这是不正确的:

   N = m * g * µ * (Math.Cos(deg) * (180.0 / Math.PI));

如果角度为度,则必须将其转换为弧度并通过余弦函数:

double rad = deg*Math.PI/180.0;
N = m*g*mu*Math.Cos(rad);

答案 1 :(得分:1)

使用Mathf.Deg2Rad和Mathf.Rad2Deg常数,您可以轻松地将弧度转换为度,也可以轻松地将度转换为弧度。

using UnityEngine;

public class Example : MonoBehaviour
{
    // convert 1 radian to degrees

    float rad = 10.0f;

    void Start()
    {
        float deg = rad * Mathf.Rad2Deg;
        Debug.Log(rad + " radians are equal to " + deg + " degrees.");
    }
}

答案 2 :(得分:0)

有一个超级方便的函数,称为Mathf.Rad2Deg和Mathf.Deg2Rad。他们将弧度转换为度,并将度转换为弧度。