Unity 小项目:模拟太阳系 您所在的位置:网站首页 unity地球自转公转 Unity 小项目:模拟太阳系

Unity 小项目:模拟太阳系

2024-07-11 13:11| 来源: 网络整理| 查看: 265

Unity 小项目:模拟太阳系

太阳系是以太阳为中心,和所有受到太阳的引力约束天体的集合体。包括八大行星(由离太阳从近到远的顺序:水星、金星、地球、火星、木星、土星、天王星、海王星 )、以及至少173颗已知的卫星、5颗已经辨认出来的矮行星和数以亿计的太阳系小天体。

文章目录 Unity 小项目:模拟太阳系1. 准备资源2. 布置场景3. 编辑脚本

1. 准备资源

由于太阳系的卫星以及小天体数目庞大,在本项目中,只模拟太阳和八大行星,以及地球的卫星月球。首先在网上搜索太阳系贴图,这里需要提醒一下大家,搜索的贴图不能是星球的照片,比如这种: 地球 否则覆盖到球体上就有黑色部分,会显得很奇怪。下面是在网上找到的所有贴图 星球贴纸 然后就要制作Material了。八大行星和月球的Material比较简单,而太阳和它们不一样,太阳是一个恒星,它本身可以发光,这才照亮了太阳系中其他天体。所以在太阳的Material中,我们修改其Shader为如图所示的Self-Illumin,即自发光 太阳 下图是准备好的Material 星球材质

2. 布置场景

建立十个球体,分别表示太阳,八大行星和月亮。按照大致的比例调整各个星球的大小距离即可。 太阳系 在太阳系中,太阳是唯一光源,删除Directional Light后会显得比较合乎实际,但是我们会发现,场景中只有太阳是亮的,它并没有发出光照亮其他天体,所以我们在太阳中添加子物体Point Light,调整其亮度和范围。然后将Main Camera的Clear Flags属性改为Solid Color,并且将背景色改为黑色,这样运行起来,我们的太阳系就仿佛在浩瀚的宇宙中。

3. 编辑脚本

实现各天体公转、自转的代码比较简单。

using System.Collections; using System.Collections.Generic; using UnityEngine; public class Rotate : MonoBehaviour { public Transform origin; //各天体公转的圆心 public float gspeed; //公转速度 public float zspeed; //自转速度 public float ry, rz; //通过y轴、z轴调整公转的偏心率,使其不在同一平面公转 void Start() { } void FixedUpdate () { Vector3 axis = new Vector3 (0, ry, rz); //公转轴 this.transform.RotateAround (origin.position, axis, gspeed * Time.deltaTime); //公转 this.transform.Rotate (Vector3.up * zspeed * Time.deltaTime); //自转 } }

将代码附到各天体上,分别设置好其公转速度,自转速度,公转偏心率**(错误:应该为公转平面的法线,偏心率是用于表示轨道形状,多谢评论指出)**,八大行星公转的圆心为太阳,月球的则是地球。最终的效果: 效果 上图是按照八大行星的实际偏心率所做出的效果,各天体轨道几乎在同一平面上,如果想要效果更明显一点,只需要稍稍修改各天体rz/ry的值就可以了。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有