我正在尝试用编程语言实现向心力。
我看到了一些教授这个理论的视频。但我不知道如何在编程语言中应用它。
如果我明白我必须向速度矢量应用向心力ac = v²/r
。但我不确切知道如何继续。
我有两个游戏对象,一个描绘地球,另一个描绘月球。我想要的是将月球翻转到地球周围并使用一个按钮来“切割/取消”向心力,以便让月球离开地球的轨道。
我不知道如何开始。
我所知道的就是像这样旋转:
velocity.x = Mathf.Cos(Time.time) * earth_moon_radius;
velocity.z = Mathf.Sin(Time.time) * earth_moon_radius;
moon.transform.position = velocity;
但如何应用如上所述的向心力?
答案 0 :(得分:1)
如果你只是想让月球围绕地球旋转而某些触发器释放月球,则更容易使用围绕中心旋转而不是力。给定以下GameObject层次结构:
中心(附MoonRotator
)
- 月亮
- 地球
public class MoonRotator : MonoBehaviour
{
public bool cancelCentripetalForce = false;
public Vector3 angularVelocity = new Vector3 (0f, 0f, 100f);
public GameObject moon;
void Update () {
if (cancelCentripetalForce) {
Vector3 radius = moon.transform.position - transform.position;
Vector3 angularVelocityRadians = Mathf.Deg2Rad * angularVelocity;
moon.rigidbody.velocity = Vector3.Cross (angularVelocityRadians, radius);
moon.transform.parent = null;
Destroy (this);
} else {
Vector3 rot = transform.rotation.eulerAngles + angularVelocity * Time.deltaTime;
transform.rotation = Quaternion.Euler (rot);
}
}
}
如果设置了cancelCentripetalForce
,则月亮停止在地球周围行进,但以其当前的切向速度继续行进。这是如下:
v =ω×r
地球有localPosition
(0,0,0), Moon 在此示例中位于围绕z轴旋转的xy平面中。