簡體   English   中英

如何讓 Unity2D 中的對象順利交互?

[英]How to make objects in Unity2D interract smoothly?

您好,我正在使用 Unity2D 用 C# 制作 2D 游戲。

游戲基本上是塔堆疊游戲,玩家從數組中獲得隨機對象,他們需要將這些對象堆疊在一起。 物體在屏幕頂部產生,身體類型為運動學,玩家只能在 x 軸上移動它,當玩家放開物體時,它的身體類型變為動態,它開始下降並降落在起始平台或塔上。

我的問題是,當這個新物體落在現有的塔或啟動平台上時,它不會平穩着陸,它會進入另一個物體,有時會彈跳,並且經常翻過塔。 當這些物體相互重疊時,它們會振動並導致塔傾倒。

有什么方法可以讓物體在着陸時保持穩定並且不會相互進入?

提前致謝。

您所描述的是所有物理引擎的一個眾所周知的問題和限制。

這叫做堆疊穩定性,如果你有足夠多的物理對象,它總是會成為一個問題。

實際上沒有一個簡單的解決方案,它是選擇正確的物理引擎、正確設置對象的屬性,甚至放入一些您自己的自定義代碼以在可能的情況下嘗試規避某些問題的組合(例如通過在堆棧中太深的元素上禁用物理,因此我們認為它們是“穩定的”,直到情況發生變化的某個時刻)。

我建議閱讀(和觀看)這個,然后從那里開始探索鏈接將帶你去的地方。

正如我所說,請記住,這是……一個常見問題,有時很難解決。 在某些復雜的情況下(不過,您的情況不應該是其中之一),甚至無法解決。

(在答案被接受兩天后編輯,我應該馬上寫這個,抱歉):

哦,我忘了(對此很抱歉,但希望您已經從您閱讀的一些資源中發現)對象相互進入的問題也可能受到某些設置的影響(我認為最大穿透深度稱為團結一致)。 另一件可能有幫助的事情是完全自定義的代碼,它將從向下落下的對象進行光線投射,並且當它檢測到某個距離處的塊時(您可能想要檢查對象可以在 1 到10 幀左右),它會暫時禁用下落物體上的物理,將其准確定位在下方塊的頂部,將速度歸零,然后重新啟用其上的物理。 這將避免穿透問題,以及新塊撞擊塔時發生的不穩定性和振動。 但是,如果您希望以某種方式呈現這種沖擊不穩定性的影響,那么您仍然可以在受影響的塊上手動添加物理力,並且它的好處是您可以設置它的大小強迫自己(而不是從塊中計算),這意味着您可以更好地控制影響效果的重要性,這對於游戲平衡非常有用,因為該效果對於游戲的難度非常重要,一般來說,你會希望對影響游戲難度的事情有這種程度的控制;)

暫無
暫無

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

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