「Unity2D入門」 アクションゲームを制作して公開するまでの道 – Rigidbody 2D –

famicom

いよいよ今回からUnityで2Dゲームを作っていきたいと思います。

今回もUnityちゃんの提供でお送りしますが、毎回提供してもらってブログだけの登場というのもあれなので今回作る2Dゲームは実際にゲームとしてストアなどに公開するという所までいきたいと思います。

Unityちゃんの登場する2Dアクションゲームです。最初なのでヒットが目的ではなく覚えるのが一番の目的としました。

SPONSORED LINK

photo by DaraKero_F

Unity 2Dについて

Unityで2Dが正式サーポートされたのはUnity4.3以降からです。まず従来のUnity3D
とUnity2Dと違うのは物理処理です。このそれぞれの処理は分離しているようなので2Dゲーム制作時に3D用のコンポーネントをうっかり使用してしまわないように注意したい部分ではあります。

あとはスクリプトの座標指定の書き方がVector3、Vector2と違うという部分までは把握しています。とりあえず慣れなのであとは制作しながら覚えていこうと思っています。

「下準備」Unity 2D

ではプロジェクトを新規で立ち上げる所から確認してみましょう。

2D用の新プロジェクトをこれから作成するといった場合はセットアップ時に「3D/2D」を選択する事ができます。
2d

すでに3D用として用意しているプロジェクトを2D用のプロジェクトにしたいといった場合は 「Edit」→「Project Setting」→「Editor」と選択しDefault Behavior Modeを「2D」に変更します。
今回のプロジェクト作成時に2Dと選択しましたが、「Project Setting」のDefault Behavior Modeを確認したらなぜか3Dになっていたので2Dに変更しておきました。

【英単語の意味】
  • 「behavior/ビヘイビア」… ふるまい、動作

2D用のアセットをダウンロード

2d4
デフォルトのアセットのパッケージのUnityちゃんは3Dなのでユニティちゃん 2Dデータを用意しました。

ステージのセットは少し懐かしめの2Dアクションゲームを思わせるフリ-のアセットがあったのでこちらもダウンロードしておきます。
2d2
Sprite Pack #1 – Tap and Fly | G.E.TeamDev

Rigidbody 2D

2Dの場合RididbodyやコライダーはPhysics 2Dから選択します。2Dの物理的な処理をするための2D用コンポーネントが用意されているようです。

このように3Dゲームを制作したい場合の物理的な処理はPhysicsを利用、今回のように2Dゲームを制作したい場合はPhysics 2Dを利用します。

Rigidbody 2DのInspectorをパッとみてどのような挙動をするのかわからなかったので確認してみました。

Use Auto Mass

コライダーの設定によって自動的にMassの処理をする機能のようです。今のところ使わないので置いておきます。

Mass

オブジェクトの重さで整数の単位は「Kg」です。Unityちゃんの体重を調べてもわからなかったのでとりあえず43にしておきましょう。

Linear Drag

オブジェクトの直線の動きににかかる抵抗 (空気抵抗) です。Dragが重いものを引きずるという意味があります。

Linear Dragの設定はデフォルトでは0になっています。試しに50にするとUnityちゃんが強風を受けているような感じになりました。

今回のような2Dアクションゲームとしての使い道としては強風や台風の影響を受けるトラップがあるステージがあってプレイヤーはそれを変わりながら進むというイメージでしょうか。

Angular Drag

オブジェクトが回転する時の空気抵抗です。プレイヤーが回転しない場合はもちろん特に影響がありません。

Gravity Scale

オブジェクトが受ける重力の影響です。動作を確認してみましょう。

▼【1】Gravity Scale「-1」に設定

2d5

▼【2】Gravity Scale「70」に設定2d6
1ではマイナスの重力なのでプレイヤーは上空にのぼっていきます。それに対し2では70位の重力からコライダーを通過して下に落っこちてしまいます。

Gravity Scale「0」に設定したらプレイヤーはその場で停止し「1」に設定したらゆっくり下降していきました。

Is Kinematic

Is Kinematicは物理的な処理の影響を受けなくなる機能です。通常無効にしておいて必要になったら有効にするという使い方でいいと思います。

▼Is Kinematicを有効にするとUnityちゃんは宙に浮いたままでさらにコライダーがきいているブロックを通り抜けました。

2d4

物理的な処理のみが対象なので、スクリプトやアニメーションになる動作の部分は別なのでもちろん左右の動きはそのままです。

Interpolate

Rigidbodyによる設定でオブジェクトの動作がぎこちない、滑らかな動作にしたい時はこの設定を使用します。

確認してみましたが違いがよくわかりませんでした。動作がカクカクし過ぎてどうしようもない場合は試してみたら有効/無効の違いがわかるかもしれません。

Sleeping Mode

Rigidbodyによる物理処理の開始・終了の設定です。CPUの内部的な処理の設定になります。オブジェクトが静止している時でもCPUが無駄に処理をしないために付いている機能です。

UnityのGUIからは「Start Awake」か「Start Asleep」でスリープ機能が有効になります。Unityマニュアルを見ると「Never Sleep」以外の設定が推奨されているようです。

  • 「Never Sleep」… 常に物理演算対象として処理されている
  • 「Start Awake」… 物理演算対象として生成されオブジェクトの動作が停止すると物理演算対象外に切り替わる
  • 「Start Asleep」… 物理演算対象外として生成されオブジェクトが動作すると物理演算対象に切り替わる

Collision Detection

衝突判定の度合いを設定する項目。高速で動作するオブジェクトが衝突する時にコライダー判定をすり抜ける場合に設定するための設定です。

CPUが高負荷になってしまう可能性があるので、必要になった時だけ「Continuous」にして有効にしておくといいでしょう。デフォルトでは「Discrete」で無効となっています。

  • 「Discrete」
  • 「Continuous」
  • 「Constraints」

オブジェクトに対する座標の動きの制限する場合などに使用する設定です。Constraintsの設定項目の中に「X,Y,Z」の座標がありチェックをした座標は固定されて動かなくなってしまいます。

2d5

【英単語の意味】
  • 「linear/リニア」… 直線の、伸びる (和製英語… リニアモーターカー)
  • 「angular/アンギュラー」… 角のある、 角ばった、 「物理」→ オブジェクトの回転量
  • 「gravity/グラビティ」… 重力、引力
  • 「kinematic/キネマティック」… 運動学 (運動学的な)
  • 「Interpolate/インターポレート」… 書き込む、改ざん
  • 「Awake/アウェイク」… 呼び起こす
  • 「collision/コリジョン」… 衝突
  • 「detection/ディテクション」… 判定、発見
  • 「discrete/ディスクリート」… 別々、個別、不連続
  • 「continuous/コンティニュアス」… つながっている、途切れない、連続的
  • 「constraints/コンストレイント」… 強制、制限

この記事のまとめ

2Dゲームを作るにはGUIとかSpriteとかもありますがその辺は部品を組み立てるように一つずつやっていきましょう。いざゲームを作ろうと思って必要さを感じるのはデザインの部分です。

というのもUnityのプレイヤーをアニメーションさせるためのMecanimという機能がアニメーション動作設定をGUIから行えるらしいという事からです。ゲーム制作においてデザインが描けるというちょっとした強みみたいなものを感じました。

本格的なデジタル絵は難しそうですが簡単なキャラをドット絵で描くというちょっとしたスキル位は身に着けながら今回作るゲームに組み込んでみたいと思っています。

関連記事




この記事が気に入ったら
いいね!しよう

最新情報をお届けします

Twitterでめちゃログをフォローしよう!