簡體   English   中英

在Unity3D中使用物理學的恆定軌道

[英]Constant orbit using physics in Unity3D

我正在玩Unity3D,並將物理添加到場景中的對象上。 我目前在屏幕中央有一個球體(行星),並且在其外部有一個不動的球體(月亮)。 當我運行游戲時,我希望月亮通過對其施加作用力使其繞行星運行。 我已經能夠通過調用rigidbody.AddForce()獲得加力,它將沿指定方向移動它,但它不會繞軌道運動。 我不確定如何對其施加力,以使其以恆定速度連續繞球旋轉。

我已經嘗試過使用ConfigurableJoint一些示例,並且它繞軌道運行,但是它開始會稍微彈起,然后開始軌道。 我的目標是讓一束繞軌道運行的衛星以自己的速度運行,能夠彼此反彈而不會失去速度。

有任何想法嗎?

為了使月亮繞軌道運行,您需要給月亮一個初始速度。 然后讓它向行星加速,這是恆力。

在此處輸入圖片說明

在此處輸入圖片說明

gameObject.rigidbody.AddForce(1, 0, 0);
gameObject.constantForce.relativeForce = Vector3(0, 1, 0);

一般來說,您最終將失敗,因為積分方法中的舍入誤差將使您緩慢地脫離軌道。 您可以按照建議的方式非常接近,但您可以考慮做更多類似“ Kerbal太空計划”的工作,該程序似乎將軌道計算為橢圓,然后跟隨該橢圓直到有理由相信它應該停止而不是停止嚴格地“模擬”軌道...

如果發生碰撞,請讓普通物理學解決該碰撞,然后根據結果重新計算您的新軌道並開始跟蹤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM