所以我試圖在 Unity 2D 中模擬軌道力學。我在場景中有一個船和月球模型。我計算了影響范圍,如果月球和船之間的距離小于影響范圍,重力就會起作用。問題是;
我不能讓重力影響作業。
我嘗試過使用 AddForce 方法,但由于它需要 Vector2 元素并且我將力計算為浮點數(我使用牛頓萬有引力定律并得到一個浮點數),我不知道如何將我的浮點力包含在 Vector2 力中.
force = (GravitationalConstant * ((planetMass * ship.GetComponent<Rigidbody2D>().mass)/Mathf.Pow(Vector3.Distance(ship.transform.position,transform.position),2)))/(realityConstant * forceReducer);
if (Vector3.Distance(transform.position,ship.transform.position) < SOI/realityConstant){
ship.GetComponent<Rigidbody2D>().AddForce(new Vector2((float)force,0f));
}
此代碼使 Moon 僅從左側將船拉向自身。當船經過月球時,它會一直向右推。不是對自己。
我需要一個修復,讓月亮每次都用特定的力量把船拉到自己身上。我如何做到這一點?
任何想法都會有所幫助。
非常感謝!
uj5u.com熱心網友回復:
使用矢量施加力。你有你的向量的大小,但沒有它的方向。您可以通過從船位置中減去月球位置來計算方向:
ship.GetComponent<Rigidbody2D>().AddForce((Moon.transform.position -
ship.transform.position).normalize * force);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/511522.html
標籤:unity3d