Unityで角度に制限をかける方法

 今回は知らないと躓くかもしれない、Unityで回転を加える際に制限をかける方法を説明します。

 

原理

 早速ですがコードの紹介です。

 

見慣れない書き方だと思う人もいるかもしれませんので、19行目の説明をします。

 まず、

bool型 ? a : b ;

この形は、「もしbool型がTrueならばa(左)、Falseならばb(右)」という処理になります。if文で書くと、こうなります。

 

 目で見てわかるほどコードの量が減るため、if文を書くのが面倒くさいという場合にお勧めです。ただし、今回のように2重にする場合等はカッコで括るなどしないと分かりづらくなってしまいます。

 

 さて、続いては19行目の中身を解説していきます。と言っても、if分で書かれた内容から推察できてしまうかもしれません。そんな方は、この先の内容が自らの考えと一致しているか確認程度で見てください。

わざわざここまで面倒くさくしているのは、

回転する際の値が原因

です。これを見ている人は、制限をかけるとどうしても変な角度になってしまうと思います。それは、皆さんが考えている値実際に回転する際の値が異なっていることに起因します。

まずは次の画像を見てください。

 これがスクリプトで実際に計算しているときの回転の値となるわけですが、インスペクター上では0°から下げていくとマイナスになっていきます。このインスペクターの値を見て制限をかける際に 「-80 < x < 80」 のようにしてしまうと、予期しない挙動になってしまうわけです。そのため、このコードでは「280 < x < 360」と「0< x < 80」のように2段階に分けて処理を行っています。

 これさえ理解してしまえば、上記のコードと図を参考に、自由に回転に制限をかけることが出来ます。

 

[rakuten:book:20351971:detail]