Unity研究所<Unityによるゲーム開発、映像開発>

Unity初心者40代後半中年中間管理職おやじが綴るゲームで小遣い稼ぎできるようになるまでのブログ

Unity 小ネタ Hinge JointのMotorを使った羽根の開閉

f:id:Harukichi:20200802000327g:plain

今回は、上記の動画の羽根の部分の制御方法について解説する

 

〇用意するもの

 ・羽根のモデルデータ

 

〇仕組み

ざっくり説明するとHinge JointのMotorをオンにして開放し、オフにしてSpringの力で元に戻るようにしているだけ

設定の仕方としては下記の通り

1 UnityのHinge Jointを羽根のモデルに追加

2下図のように回転する軸にHinge JointのAnchorを調整

3 Use Springをオンにして、Springの強さを設定

4 MotorのTarget Verocity、Forceを設定

 回転速度と回転する強さという感じ?

5 Limitsにて回転する範囲を設定

 Inspectorでの設定は以上

6 スクリプトでMotorのUse Motorの値をtrueにすると開放、falseにして閉鎖

f:id:Harukichi:20200802001504p:plain

スクリプト

void WingOnOff(bool flag)
{

 if (flag) {

  LeftWing.GetComponent<HingeJoint>().useMotor = true;

  RightWing.GetComponent<HingeJoint>().useMotor = true;
 }
 else {
  LeftWing.GetComponent<HingeJoint>().useMotor = false;

 RightWing.GetComponent<HingeJoint>().useMotor = false;
 }

}

 

〇備考

 最初はHinge Jointを使わずに、スクリプトで回転させていたが、物理を無視した瞬間移動になってしまうみたいで、上から落ちてくる玉がぶつかってもすり抜けてしまった

 Hinge Jointを使用したら、物理的な動作を行ってくれるようで、羽根に玉が当たると玉の流れが変わるようになり、羽根の閉まる強さで玉がはじかれるような動きも実現することができた

 

今回は以上