首先来创建两个球体(Sphere),在GameObject->Create Other->Sphere,执行两遍,就有两个球体了,把它们分别命名为earth和moon,在Inspector里把earth的Scale参数全部改成5,这样看起来就比moon大了。下面我们实现环绕飞行。
先来讲一下实现原理,看图

假设我们围绕的圆心坐标是x0,y0,围绕半径r和围绕角度a已知,现在我们来确定当前物体的x坐标和y坐标。
由三角函数可知:
x = r * cos(a) + x0; y = r * sin(a) + y0;
由于a是角度,在Unity里要换算成弧度,因此需要
弧度 = 角度 * Math.Pi / 180
新建一个C#脚本,通过Assets->Create->C# Script,重命名该脚本,打开,输入如下代码,意思都写在注释里了
using UnityEngine;
using System.Collections;
public class surround : MonoBehaviour
{
private float r = 9.0f;//半径
private float originX;//圆心x坐标
private float originY;//圆心y坐标
private float originZ;//圆心z坐标
private int angel = 0;//角度
// Use this for initialization
void Start()
{
GameObject centerObject = GameObject.Find("earth");//找到earth的GameObject
originX = centerObject.transform.position.x;//确定圆心x坐标
originY = centerObject.transform.position.y;
originZ = centerObject.transform.position.z;
TransformPosition(angel);//环绕
}
// Update is called once per frame
void Update()
{
angel++;//每次转1度
if (angel == 360)
{
angel = 0;//转360度后归零
}
TransformPosition(angel);//环绕
}
private void TransformPosition(int angel)
{
float x = originX + Mathf.Cos(angel * Mathf.PI / 180) * r;//获取moon x坐标
float y = originY + Mathf.Sin(angel * Mathf.PI / 180) * r;//获取moon y坐标
this.transform.position = new Vector3(x, y, originZ);//变换moon位置
}
}
最后把这个脚本拖到moon打开的Inspector里就行了。运行一下看效果吧。
参考视频: unity3d视频22_环绕飞行
