UFOキャッチャーのクレーンのアームに付けていたMesh Colliderですが、Convexにチェックを入れたことによりコライダーが3Dモデルと異なる形になっていました。
初めはこのままでも良いかと思っていたのですが、動作の確認をしているうちにやはり3Dモデルの形と同じ方が良い気がしてきました。
という訳で3Dモデルと同じ形のコライダーにしたいのですが、Convexを外すと他のメッシュコライダーと衝突しなくなってしまうので駄目。それにRigidbodyを使っているのでConvexを外すとエラーが出るからそもそも外せません。
結局Unityの操作では解決方法が分からず、Blenderで3Dモデルのデータを修正することにしました。
このようにアームの上部と下部を別パーツにすることでメッシュコライダーが3Dモデルの形と同じ形状になりました。もっと良い方法は無いのかな?
それとアームの開閉についても全部変更しました。今までアームを開く動作はtransform.rotationにQuaternion.Eulerを代入していました。閉じる動作はAddTorqueを使うつもりでしたが、Hinge Jointを使っているので開閉両方ともLimitsとMotorをいじれば良いことに気づきスクリプトを変更しました。
とまぁそんな感じでクレーンの動作が一通り完成しました。

- 右に1回移動
- 奥に1回移動
- アームを開く
- クレーンを下ろす
- 決められた所までクレーンが下りるか物にぶつかったら下ろすのを止める
- アームを閉じる
- クレーンを上げる
- 決められた所までクレーンが上がったら上げるのを止める。
- スタート地点まで戻る
- アームを開く
- アームを閉じる
- 最初の手順に戻る
動作を書き出すとこんな感じですね。最初は簡単そうだと思ったけど作ってみると意外と難しかったですね。
あと動作は完成したものの、何か物を持ち上げた際にその持ち上げた物がアームをすり抜けてしまうという現象が発生しました。ここでずっと躓いていましたが、オブジェクトのサイズを10倍にしてみたら解決したっぽいです。
3DモデルはBlenderで寸法の値1を1mとしてゲームセンターにあるUFOキャッチャーのサイズをyoutubeを見たりしながら思い浮かべて作ったのですが、正常に動作させるには小さかったのかな?それとも他に良い方法があるのかな?
スポンサーリンク
僕も個人でUFOキャッチャーを作っています。
ですがまだまだunity初心者なのでうまく行かないことだらけです^^;
そこで参考になるブログなどないかなと思い調べるとここのブログにたどり着きました。
僕は途中動作をアニメー愛ションにしているのですがブログ主さんはどのような方法で動作させていますか?
途中動作:筐体下げる→アーム開→アーム閉→筐体上げる
返事が遅くなって申し訳ありません。
僕はアニメーションは使わずにスクリプトで動かしています。
クレーンの上げ下げにはバーのY軸方向のサイズを変更し、それに伴いクレーン本体のY軸方向の位置を変更するようにしています。
アームの開閉については本文中にもあるようにHinge Jointを使っています。