UNITY 围绕一个物体做圆周运动

有一道题:一个物体围绕原点(0,0)做匀速圆周运动。t1时物体位置为(x1,y1),已知物体的角速度为 w,围绕半径为 r。求经过时间t后,物体在圆周上位置(x,y)。

求得:
- x = r * sin(w * t)
- y = r * cos(w * t)

using UnityEngine;

public class RotateAround : MonoBehaviour {
    public Transform aroundPoint;//围绕的物体
    public float angularSpeed;//角速度
    public float aroundRadius;//半径

    private float angled;
    void Start () {
        //设置物体初始位置为围绕物体的正前方距离为半径的点
        Vector3 p = aroundPoint.rotation * Vector3.forward * aroundRadius;
        transform.position = new Vector3(p.x, aroundPoint.position.y, p.z);
    }

    void Update () {
        angled += (angularSpeed * Time.deltaTime) % 360;//累加已经转过的角度
        float posX = aroundRadius * Mathf.Sin(angled * Mathf.Deg2Rad);//计算x位置
        float posZ = aroundRadius * Mathf.Cos(angled * Mathf.Deg2Rad);//计算y位置

        transform.position = new Vector3(posX, 0, posZ) + aroundPoint.position;//更新位置
    }
}

你可能感兴趣的:(UNITY 围绕一个物体做圆周运动)