前提・実現したいこと
Unitiy2Dで開発を進めております。
ヒンジジョイントの回転軸となる「ピン」と回転するオブジェクトの「棒」が存在します。
ともにリジットボディーが付けられています。
棒の重心は棒の中心にあります(これは変更したくありません)。
棒はたまごの殻のように中は空間があります。
実現したいことは,単純で,「ピンを軸に棒を回転したい」ということです。
後述いたしますが,力を加えると問題が起きてきます。
試したこと
棒にヒンジジョイントをアタッチして,以下のように設定しました。
ConnectedrigidBody「ピン」
衝突は「無効」
アンカーの接続設定を自動化「無効」
接続されたアンカー「棒の回転する棒の相対座標」
アンカー「X:0 Y:0」
モーターの使用「無効」
AngleLimits「応力:Infinity トルク:Infinity」
これで,重力を受けて回転する程度ならば問題なく,ピンを中心にぶらぶらしてくれました。
図の〇の中に×があるのがピンで,ぶら下がっているのが,棒です。
棒の黄色の枠の中は空間です。黄色内側の黒い部分にコライダーで覆っています。
発生している問題・エラーメッセージ
問題は,棒に力を加えたときに,回転軸がずれていってしまうということです。
棒の中に青ボールを入れ,互いが反発するようにスクリプトが組まれています。
ボールが棒の内壁に当たって棒に力を加えます。(ちなみに,棒とボールの質量比は1:1です(これは変えがたい))。
すると,回転軸がずれます。
表現しづらいですが,ヒンジジョイントの回転軸がずれ,伸びている感じです。図をご覧ください。
シーンで確認すると,ピンからアンカーまで,黄緑?の線が出ているのが見えます(伸びてる?)。
棒に大きな力が加えられると,回転軸がずれてしまいます。
仮に,棒の質量を200ぐらいにしても同じようにヒンジジョイントが伸びました。
試したこと2
ピンから棒が離れてほしくないので,ディスタンスジョイントもついでにつけてみました。
これでもだめでした。
「Unity ヒンジジョイント ずれ」などでヒットするサイトを色々と見ましたが,的を得ることができませんでした。
論点
①ヒンジジョイントなどの設定がそもそも間違っているのか。
②ヒンジジョイントなどの設定が正しいならば,このような状況下では,ヒンジジョイントでは回転軸を固定することができないのか(Unityの仕様でどうしてもずれてしまうものなのか)?
③②がUnityの仕様で仕方がないことであれば,ヒンジジョイント以外で,回転軸をずれないように,棒がぶらぶらするようなこと(ピンの位置は棒のどの位置でも設定できる)を実装するにはどのようにしたらよいのか?
よろしくお願いいたします。
補足情報(FW/ツールのバージョンなど)
unity2018 2D Windows10

回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。