[Unity] 直方体を転がすスクリプト

以前、Cubeを転がすスクリプトについて記事を書きましたが、ご要望があったので、直方体を転がすスクリプトに書き換えました。もちろん下記のスクリプトでCubeも転がせるので、より汎用性を増した形になります。

 

 

スクリプトは以下。

 

Cubeを作って、Transformのscaleでサイズを変更して、上記のスクリプトを付与すればOK。(というか、それ以外は想定していない。)

大きな変更点は、回転半径と回転をスタートするときの角度を計算するようにしたところです。Cubeの場合、回転半径も角度もどの方向に転がっても同じなので固定(半径は辺の長さ×(√2)/2、角度は45°)にしていましたが、それを回転方向と直方体の辺の長さから計算するようにしています。

Objectの向きと回転方向は90行目以降のif文で求めていますが、方法としては移動する向きのベクトルとObjectの向きが同じであれば内積が1になるはずなので、その性質を利用して進行方向と面に垂直な方向を求めています。判定が”==1″でなく”>0.99″なのは、数値計算の誤差でピッタリ1にならないことがあるので、”>0.99″を使っています。

パッと思いついた方法でとりあえず書き換えたので、もっといい方法があるかもしれません。

 

サイコロを転がすパズルゲームColorful Diceを下記からダウンロード

【Android】Colorful Dice -カラフルでポップなサイコロパズル-

“[Unity] 直方体を転がすスクリプト” への 1 件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です