角度Degree与弧度Radian
两条射线从圆心向圆周射出,形成一个夹角和夹角正对的一段弧。当弧长等于圆周长的360分之一时,夹角为一度。弧长等于圆的半径时,夹角为1弧度。 角度与弧度的换算 PI = 180度 1弧度=180度/PI 1角度=PI/180度 角度=>弧度: 弧度=角度数PI/180 API: 弧度=角度数Mathf.Deg2Rad 弧度=>角度: 角度=弧度数180/PI API: 角度=弧度数Mathf.Rad2Deg 在日常生活中角度制应用比较广泛。 在三角函数中弧度制可以简化计算。
反正弦、反余弦、反正切等函数的总称
可用于根据两边长,求角度。
公式:
API:
Mathf.Asin(float radian)
Mathf.ACos(float radian)
Mathf.Atan(float radian)
根据三角函数求出坐标v相对于cube在z轴和x轴的偏移量,然后用在cube坐标的基础上,x加上x轴偏移量,z加上z轴偏移量得出的坐标就是v坐标了。但是这样求得的坐标,当cube旋转时v坐标是不会变的,如果需要让v坐标会随着cube的旋转而改变,可以用cube.transform.transformPoint(x偏移量,0,z偏移量)将v相对cube的坐标转为世界坐标,这样当cube旋转时,v的坐标也会跟着旋转了。脚本如下:
public class DrawTest : MonoBehaviour
{
// Start is called before the first frame update
public GameObject cube;
// Update is called once per frame
void Update()
{
Demo();
}
private void Demo()
{
float xAdd = Mathf.Sin(30 * Mathf.Deg2Rad) * 10;
float zAdd = xAdd / Mathf.Tan(30 * Mathf.Deg2Rad);
Vector3 newcube = new Vector3(cube.transform.position.x + xAdd, cube.transform.position.y, cube.transform.position.z + zAdd);
//Vector3 newcube = cube.transform.TransformPoint(xAdd, 0, zAdd);
Debug.DrawLine(cube.transform.position, newcube);
Debug.DrawLine(Vector3.zero, newcube, Color.green);
}
}
效果
Vector3 newcube = new Vector3(cube.transform.position.x + xAdd, cube.transform.position.y, cube.transform.position.z + zAdd);
Vector3 newcube = cube.transform.TransformPoint(xAdd, 0, zAdd);