Unity 小项目:模拟太阳系

Unity 小项目:模拟太阳系

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

1. 准备资源

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

2. 布置场景

建立十个球体,分别表示太阳,八大行星和月亮。按照大致的比例调整各个星球的大小距离即可。
太阳系
在太阳系中,太阳是唯一光源,删除Directional Light后会显得比较合乎实际,但是我们会发现,场景中只有太阳是亮的,它并没有发出光照亮其他天体,所以我们在太阳中添加子物体Point Light,调整其亮度和范围。然后将Main CameraClear 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的值就可以了。

  • 15
    点赞
  • 87
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
Unity是一款强大的游戏开发引擎,它提供了一系列的工具和功能可以帮助开发者实现太阳系运动的模拟。实现太阳系的运动模拟需要涉及到一些物理计算和渲染效果的应用。 首先,我们可以使用Unity的物理引擎来计算行星的运动轨迹。每个天体都可以被建模为一个刚体,并赋予初始位置、速度和质量等属性。通过使用万有引力定律,我们可以在每一帧中更新天体之间的相互作用力,然后计算得出新的位置和速度。以此方式,我们可以模拟行星绕太阳的运动以及其他行星之间的相互影响。 其次,我们可以设计逼真的天空盒和贴图来呈现太阳系的景象。通过在Unity中创建一个巨大的球体作为天空盒,并将太阳、行星、卫星等模型放置到正确的位置上,我们可以达到更加逼真的效果。此外,还可以使用Unity的粒子系统来模拟一些天体特有的效果,比如彗星的尾巴或者行星的大气层。 此外,Unity还提供了一套强大的渲染引擎,使我们可以在模拟中实现逼真的光照效果。通过配置灯光的类型、位置和强度等属性,我们可以模拟太阳光的照射效果,并让行星表面产生逼真的阴影效果。 最后,为了提高模拟的逼真度,我们还可以添加一些附加的特效,比如星云、流星雨、日食、月食等,以及一些声音效果来增强用户的体验。 总的来说,Unity是一个非常适合实现太阳系运动模拟的工具。通过利用其物理引擎、渲染引擎和特效功能,我们可以创建出一个真实且逼真的太阳系模拟,让用户更好地了解和探索太阳系的运动。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值