Babybus-u3d技术交流-物理仿真之地球绕着太阳转
看到星星宝宝都是rotate的旋转,心血来潮就打算用物理来模拟地球绕太阳转的效果,首先,根据我们以前所学的物理知识,来做一个受力分析,地球绕着太阳转首先地球需要一个向心力,一个沿着切线方向的力和一个自己在旋转的力矩。受力分析相信大家都会,就不画图了。
晒代码:
void FixedUpdate()
{
//给地球添加自转的力矩
rigidbody.AddTorque(Vector3.up * 10);
//计算向心力的方向
Vector3 xiangxinli = new Vector3(Sun.transform.position.x - transform.position.x,Sun.transform.position.y-transform.position.y, Sun.transform.position.z - transform.position.z);
//添加向心力
rigidbody.AddForce((xiangxinli * 30.0f));
//添加切线方向的力
rigidbody.AddForce((transform.forward)*1500);
}
大家创建两个球体,一个太阳,一个地球,两个球的距离大于6以上,为什么要大于6呢?因为 F = (m*v^2)/r,根据公式,半径太小是不可能做圆周运动的,就像卫星没有发射到足够的高度会掉下来,当然切线速度V也不能太小,没速度飞不起来,也会掉下来,高中物理大家想想就明白了,不多做解释。
我这个简化了绕飞的步骤,大家可以先把物体发射到足够高度,在设置切线速度,这样比较只观。
顺便说一下,想增大绕飞半径加大切线速度就可以了