Unity三体运行模拟体验

这两天看完三体电视剧,很想体验一把三体人的世界…于是,说干就干。

先来看看效果吧

先来个上帝视角的

Unity三体模拟上帝视角

然后再来个三体人视角的(行星视角)

Unity三体运行模拟(行星视角+上帝视角)

其实很简单

简单的复习一下万有引力定律:
F = G M ⋅ m r 2 F = G{{M·m}\over{r^2}} F=Gr2Mm
其中,F是两个物体间的引力,G是引力常数,M和m分别是两个物体的质量,r是他们之间的距离。

搭个简单的场景

这场景实在是太简单,就4个球。为了好看点,材质加了纹理、法线、发光贴图,然后PostProcess环境简单调试一下,场景默认的平行灯禁用,给3个太阳添加灯光组件。如下图所示:

然后简单的写几行代码

总共用了3个脚本:

脚本1:星星管理器。

主要提供游戏里用到的几个静态变量,没有别的用了。


using UnityEngine;public class GameLogic : MonoBehaviour
{public const float G = 0.03f;public static ThreeBody[] bodys;private void Awake(){bodys = GetComponentsInChildren<ThreeBody>();}
}
脚本2:星星运行(核心)
using UnityEngine;[RequireComponent(typeof(Rigidbody))]
public class ThreeBody : MonoBehaviour
{[SerializeField] private float initSpeed;  // 初始速度public Vector3 position{get => transform.position;set => transform.position = value;}private Rigidbody rigid;private void Awake(){rigid = GetComponent<Rigidbody>();}private void Start(){// 如果想让星星初始时随机朝向,那么取消注释这一句// transform.forward = Random.onUnitSphere;// 赋值一下星星的初始速度rigid.velocity = transform.forward * initSpeed;}private void Update(){Vector3 force = Vector3.zero;// 枚举所有的星星foreach (var body in GameLogic.bodys){if(body == this)  // 自己的话就跳过continue;// 计算另一个星星和自己的偏移,也就是指向另一个星星的方向Vector3 offset = body.position - position;// 万有引力公式force += offset.normalized * (body.rigid.mass * rigid.mass * GameLogic.G / offset.sqrMagnitude);}// 将计算得到里引力,施加到刚体上rigid.AddForce(force);}
}
脚本三:星星自转(没有也行)
using UnityEngine;public class SelfRotation : MonoBehaviour
{[SerializeField] private Vector3 axis;[SerializeField] private float Speed;private void Update(){transform.Rotate(axis, Speed * Time.deltaTime);}
}

感想

这个参数确实很难调啊,总是运行一会儿就碰到一起了。很难调整处一个很稳定的结构。稍微调一点点参数,初始位置、初始速度、引力系数、质量。。。那么结果是千差万别。甚至一样的条件下,计算机帧率不同,结果就不同。呵呵。只能算个粗略的模拟吧,但是能感受到效果了不是吗??还能看见“引力弹弓”的神奇。总体来说,很适合新手去练练手。

相关代码

点击下载源码
源码中包括很多精美的地面高清贴图,还有很多精美的夜空、星空、天空盒。

Unity三体运行模拟体验相关推荐

  1. Unity游戏运行资源的制作与下载

    我们的游戏制作完发布出去提供给玩家,为了给玩家带来更好的游戏体验,要做各种的优化以及设计,首先,游戏资源的加载就是一个非常重要的方面(尤其是网页游戏).由于我们的游戏资源比较大,不能一下全部加载出来, ...

  2. 三体运动计算机模拟软件,三体运动模拟软件ThreeBody

    这是三体运动模拟软件ThreeBody,是一款三体运动模拟软件. 软件介绍 三体运动模拟软件ThreeBody,可以看三体运动,程序启动后,会出现三个随机大小的球体在运动. 使用说明 1.打开已有的一 ...

  3. 【Unity新闻】如何使用Unity进行机器人模拟? | AR/VR全球需求率激增1400%

    洪流学堂,让你快人几步. 我们一起看看上周Unity有什么大事情发生吧! 如何使用Unity进行机器人模拟? 机器人开发工作流程依赖于模拟进行测试和培训,Unity展示了机器人专家如何使用Unity来 ...

  4. [Unity脚本运行时更新]C#7.3新特性

    洪流学堂,让你快人几步!本文首发于洪流学堂微信公众号. 本文是该系列<Unity脚本运行时更新带来了什么?>的第8篇. 洪流学堂公众号回复runtime,获取本系列所有文章. Unity2 ...

  5. [Unity脚本运行时更新]C#7.2新特性

    洪流学堂,让你快人几步!本文首发于洪流学堂微信公众号. 本文是该系列<Unity脚本运行时更新带来了什么?>的第7篇. 洪流学堂公众号回复runtime,获取本系列所有文章. Unity2 ...

  6. [Unity脚本运行时更新]C#7.1新特性

    洪流学堂,让你快人几步!本文首发于洪流学堂微信公众号. 本文是该系列<Unity脚本运行时更新带来了什么?>的第6篇. 洪流学堂公众号回复runtime,获取本系列所有文章. Unity2 ...

  7. [Unity脚本运行时更新]C#7新特性

    洪流学堂,让你快人几步!本文首发于洪流学堂微信公众号. 本文是该系列<Unity脚本运行时更新带来了什么?>的第5篇. 洪流学堂公众号回复runtime,获取本系列所有文章. Unity2 ...

  8. [Unity脚本运行时更新]C#6新特性

    洪流学堂,让你快人几步!本文首发于洪流学堂微信公众号. 本文是该系列<Unity脚本运行时更新带来了什么?>的第4篇. 洪流学堂公众号回复runtime,获取本系列所有文章. Unity2 ...

  9. [Unity脚本运行时更新]C#5新特性

    洪流学堂,让你快人几步!本文首发于洪流学堂微信公众号. 本文是该系列<Unity脚本运行时更新带来了什么?>的第3篇. 洪流学堂公众号回复runtime,获取本系列所有文章. Unity2 ...

最新文章

  1. 【BZOJ 1095】 1095: [ZJOI2007]Hide 捉迷藏 (括号序列+线段树)
  2. Hadoop集群的NameNode的备份
  3. JTable表头也就是标题行给隐藏
  4. Android Service学习之本地服务
  5. 【特征工程】特征分箱
  6. 前端学习(764):创建对象的三种方式
  7. linux+mysql登录日志_Linux查看登录日志
  8. Solr入门——安装
  9. Linux安装ntp同步时间
  10. c# mysql 链接池溢出_C#MySQL连接池限制,并清理连接
  11. 情景喜剧消亡史:人人都爱,没人敢拍
  12. PPC手机新手教程,使用方法,疑难解答,最强大的PPC手机使用手则
  13. 【学习笔记】数理统计习题十二
  14. 怎么添改计算机程序,注册表怎么样添改注册表, – 手机爱问
  15. Ubuntu18.04设置自动连接WIFI
  16. 弘辽科技:如何写出自带流量的标题
  17. MAC无法挂载移动硬盘
  18. ERP标准成本计算需要哪些数据准备
  19. Kubernetes_介绍
  20. 云栖小镇通勤车_云栖小镇通勤特快线即将上线!@上班族们,冬日上班新姿势快来Get!...

热门文章

  1. NLP-生成模型-2014:Seq2Seq【缺点:①解码器无法对齐编码器(Attention机制);②编码器端信息过使用或欠使用(Coverage机制);③解码器无法解决OOV(Pointer机制)】
  2. 校园广播系统应用案例-柴达木职业技术学院
  3. 2021年英语专升本英语阅读「Part II 阅读专区」【文章(图片)、答案、词汇记忆】
  4. 新美大和阿里本地生活的竞争趋势是如何的?
  5. java中 引用传递_Java中的引用传递
  6. 2022-06-29 银河麒麟V10 Nginx-rtmp+FFmpeg流媒体服务器环境搭建
  7. 记录百度地图使用中遇到的问题
  8. Apprentice: Using Knowledge Distillation Techniques To Improve Low-Precision Network Accuracy
  9. open FIFO for write returns “No such device or address”
  10. 文件上传漏洞—一句话图片马制作