【ゲーム制作】No.24 ヒンジジョイント (物理エンジン)

ヒンジジョイント

ー90度~+90度の角度制限がついています。(わかりずらいですが)

 

今回は物理エンジンの機能追加になります。
いきなり物理エンジンなんで唐突ですよね?
自分も困惑してます。

 

この11月から12月で、2点機能追加出来たので
今回それを載せることにしました。

 

内容は拘束オブジェクトのひとつであるヒンジジョイントの更新になります。
(もう一つは拘束オブジェクトのひとつである摩擦ジョイントです)

 

ヒンジドアのジョイントは以前からずっと作成していて
ドアを開け閉めは出来るのですが、どこまで開くか、どこまで閉じるか
という角度制限(UnityにおけるLimits_MinとLimits_Max)が実装出来ていませんでした。

 

どうすれば角度制限が実装出来るのか、いろいろ考えたのですが
わからないまま時間だけ過ぎていく感じでした。(ここいらが高卒の限界ですね笑)

 

ですが最近幸運にもネットでやり方を示す資料が見つかったので
今回それを元に実装してみました。

 

資料は以下になります。

「ながむしメモ」というブログに載っていた
「ConstraintsDerivationRigidBody3D.pdf」という資料です。

(ブログで教えてくれた方ありがとうございます!!)

 

この資料は、実装者メインというか、余計な説明は最小限にとどめ、
コード製作者に必要なことだけを羅列している形で
わかりやすく作られており、コストがかからない良い資料でした。

 

実際の制作の方は、変更は1点のみ。
それ以外は資料の内容そのままを適用することで実装出来ました。

 

変更点は、資料の20ページ
「2.4.1 Position constraint」で「Ctrans(s) = x2 + r2 + r2 − x1 − r1」とありますが
正しくは「Ctrans(s) = x2 + r2 − x1 − r1」です。(ボールジョイントで使われている)
関連する式はヒンジジョイントでは無く、ボールジョイントで表記されている方を使う必要がありました。

 

次回も物理エンジンの追加点にする予定です。