使用素材:
1.Planets with Space Background in Flat Style
2.Planet Icons
创建场景
编写脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Cytaster : MonoBehaviour
{
[SerializeField]
private float rotate_speed; //自转速度
[SerializeField]
private Transform revolution_center; //公转中心
[SerializeField]
private float revolution_speed; //公转速度
void FixedUpdate() {
transform.Rotate(Vector3.forward*rotate_speed*Time.deltaTime);
if(revolution_point!=null){
transform.RotateAround(revolution_point.position,Vector3.forward,revolution_speed*Time.deltaTime);
}
}
}
Transform.Rotate(Vector3 eulers,Space relativeTo=Space.Self/Space.World)
应用一个围绕Z轴旋转eulerAngles.z度、围绕X轴旋转eulerAngles.x度、围绕Y轴旋转 eulerAngles.y度(按此顺序)的旋转
Transform.RotateAround(Vector3 point,Vector3 axis,float angle)
将变换围绕穿过世界坐标中的point的axis旋转angle度
参数设置
对于一般的行星,公转中心都是太阳
对于行星系统
假设以行星系统为参考系,则卫星围绕注星进行公转
而主星没有公转只有自转
将主星及其卫星看作一个整体共同在恒星系中完成公转运动,为此使用一个空物体代表主星及其卫星构成的行星系统(如下图中的Sub-System)
为该物体(Sub-System)挂载脚本,以此控制整个行星系统在恒星系中的公转