Google+ もご覧ください
ユーザーアイコン

Unityではじめるゲーム開発

Unity4.3 で追加された Sprite 機能を使ってみよう - その4(物理エンジンを使う)

Nakamura001

Unity4.3 で追加された Sprite 機能を使ってみよう - その4(物理エンジンを使う)

今回は Sprite で物理エンジンを使う方法を解説します。

Unity は以前のバージョンでも 3D 環境向けの物理エンジンは搭載されていましたが 2D ゲーム開発のサポート追加に伴い、物理エンジンも 2D 環境向けのものが追加されました。

Sprite に物理シミュレーションを行わせる場合には 3D 向けのコンポーネントは使えず、 2D 向けのコンポーネントを使う必要が有ります。

それでは早速、物理シミュレーションに使うコンポーネントの解説を始めようと思います。文章だけでは分かりづらい部分も多いので実際に動かした時の動作を確認しながら解説を進める事にします。

こちらのプロジェクトを事前にダウンロードして開いておいて下さい。

Distance Joint 2D

このコンポーネントを使うと2つのスプライトが見えないヒモで結ばれた様な動作を行います。

シーンファイル Distance を開いてみて下さい。実行すると中央の「緑のBox」と「赤のボール(向きが分りやすい様に顔を描いています)」が見えないヒモが結ばれているかの様な動作をする事が確認できます。

MainBall を選択し、インスペクターで Distance Joint 2D を見つけ、ゲームの実行中に Distance の値を変更してみて下さい。ヒモの長さが変わるのが確認できます。

 Distance Joint 2D
Distance Joint 2D

なお、画面をクリックするとクリックした位置から赤いボールに向かって白いボールが飛んで行くように実装してあります。 Sprite 同士がぶつかった時の挙動などはこの機能を使って確認して下さい。

次に MainBall の子の Anchor をアクティブにします。

 Anchor を有効に
Anchor を有効に

アクティブにすると MainBall の中央に緑色の Sprite が表示されます。

この緑色の Sprite には MainBall の Distance Joint 2D の Anchor に設定されている位置に Sprite を移動するプログラムを追加してあります。

MainBall に選択を戻し、 Distance Joint 2DAnchorX の値を 0.6 にしてみて下さい。

緑のマーカーの位置が MainBall の真ん中から右に移動し、 MainBall の顔の向きが下になりました。

 Anchor の X の値を変更
Anchor の X の値を変更

この動作で分かるように Anchor はヒモを結んでいる位置をローカル座標で設定します。今回の場合には MainBall のローカル座標でX方向に 0.6 の位置にヒモを結んだ事になるため、このような動作が起きました。

次に ConnectedAnchor プロパティについて解説します。こちらも Anchor と同様に ConnectedAnchor プロパティで指定した座標に緑色の Sprite が表示されるようにプログラムを設定してあります。最初から画面の中央に表示されていた緑色のBoxがその Sprite です。

ConnectedAnchor プロパティの値を変更するとヒモの反対側の繋ぎ目の位置が移動しているような動作をするのが確認できます。

Connected Rigid Body プロパティではヒモを結ぶ相手を指定できますがこのシーンでは設定していません。この場合、 ConnectedAnchor プロパティで設定した値はワールド座標で位置を指定したのと同様の扱いになります。

今回の場合は (0, 0) になっているのでワールド座標の (0, 0, 0) の位置にヒモが結ばれているような動作となります。

例えばこのプロパティに SpriteA の Rigid Body 2D を設定します。すると ConnectedAnchor プロパティで指定した値は SpriteA のローカル座標として扱われます。先ほどと同様に X の値を 0.6 に設定すると SpriteA のローカル座標の X が 0.6 の位置にヒモが結ばれます。

シーンファイル Distance2 にこのパターンのサンプルを作成しています。 Distance2 を開いて、 MainBall の ConnectedAnchor プロパティの X の値を 0.6 に変更してみて下さい。 SubBall のローカル座標で X が 0.6 の位置にヒモが結ばれているかのような動作になる事が確認できます。

 Connected Rigid Body が設定してある場合
Connected Rigid Body が設定してある場合

最後に Collide Connected の解説です。このプロパティは Connected Rigid Body で指定したオブジェクトとの当たり判定を有効にするかを指定します。 MainBallConnected Rigid Body をチェックすると SubBall にぶつかるようになったのが確認できるはずです。

Slider Joint 2D

Slider Joint 2D は決められた直線上を移動する様な動作を行います。

シーンファイル Slider を開いて色々と操作してみて下さい。

Slider Joint 2D は基本的には決められた直線の上を移動しますが絶対にその直線上から外れないわけではありません。極端に強い力をかけるとその直線から外れる事もありますのでその点は注意して扱いましょう。

Slider Joint 2D のプロパティはこの様になっています。

 Slider Joint 2D のプロパティ
Slider Joint 2D のプロパティ

Angle は移動する直線の角度を指定します。 0 の場合には移動方向は垂直方向となります。 45 を指定すると45度傾いた直線が指定された事になります。

 Angle の指定
Angle の指定

Use Motor は自動的に力が加わる Motor を使うかどうかを指定します。 Angle90 に変更した後に Use Motor をチェックして実行してみて下さい。

実行すると画面の左の方へ MainBall が自動的に移動したはずです。確認したら今度は Angle の値を 270 に変更してみて下さい。今度は右の方へ移動したはずです。

次に Angle の値はそのままで、 Motor Speed の値を -40 に変更してみて下さい。するとまた左に向かって移動するようになります。

Maximum Motor Force では Motor が使う Force の最大値を設定します。ある程度余裕を持って設定しておかないとこの制限により Motor Speed に設定した値に達しないという事が発生するので注意しましょう。

Translation Limits は移動可能な範囲の上限と下限を指定します。 Use Limits をチェックすると、この制限が働きます。

今回の解説はここまでです。次回は Spring Joint 2D と Hinge Joint 2D の解説をします。

Unity
タグ:

記事をリクエストする

関連記事

コメント