きゅぶろぐ

きゅぶんずの ぶろぐができて べんりだな

Unityの物理演算使ってると、すぐに物が吹っ飛ぶんだけど?って時に読む記事

板を2秒時点で下にずらして、さらに2秒後に元の高さに戻すデモ

はじめに

ゲームで使う物体のサイズ感、質量、求めている精度によってパラメーター調整を行う必要があるので、これが正解!みたいな数値があるわけじゃありません。

MaxDepenetrationVelocity

Physicsの調整できる項目一覧はドキュメントにあるのですが、
ここに何故か乗っていない2020.1から追加された DefaultMaxDepenetrationVelocity が吹っ飛び抑制にデカイ効果を発揮します。
(デフォルト値が指定出来るようになっただけで、個別の指定はRigidbody.maxDepenetrationVelocityで2018.4から出来ました。)

簡単に言うと、オブジェクト同士が埋まっている時に抜け出すためにかける力の最大値なのですが、デフォルト値の10.0fはよく吹っ飛びます。
小さくしすぎても、埋まったオブジェクト同士が埋まったままになってしまったりするので、適当に調整しましょう。
twitterに乗せた動画では、1m x 1mのCubeを使用しているのですが、これだと2.5fぐらいにするとちょうどよかったです。

Temporal Gauss-Seidel

Unity2019.3から、新しいSolverTypeが指定出来るようになりました。
SolverTypeをTemporal Gauss-Seidelに変更することで、収束性の向上や、貫通を修正するためのエネルギーを最小限に抑えることが出来るらしいです。