物体自转(顺时针旋转)
private float own = 5;
void Update()
{
transform.Rotate(new Vector3(0, own, 0));
}
物体A自转的同时绕着物体B转
public GameObject target;
private float step = 10;
private float own = 10;
void Update()
{
transform.RotateAround(target.transform.position, Vector3.up, step * Time.deltaTime);
transform.Rotate(new Vector3(0, -own , 0));
}
物体C自转的同时绕着物体B转
public GameObject target;
private float step = 50;
private float own = 20;
private float distance;
Vector3 dir;
void Start()
{
//初始的方向向量
dir = transform.position - target.transform.position;
//初始距离目标物体的固定距离(月球与地球之间的距离)
distance = Vector3.Distance(transform.position, target.transform.position);
}
void Update()
{
//坐标计算 (当前坐标 + 方向向量归一化 * 固定距离)
transform.position = target.transform.position + dir.normalized * distance;
//绕目标物体旋转
transform.RotateAround(target.transform.position, Vector3.up, step * Time.deltaTime);
//每帧更新方向向量
dir = transform.position - target.transform.position;
//自转
transform.Rotate(new Vector3(0, -own, 0));
}