Unity のメモ in Windows vs. Physics + Mecanim

Unity の入門も、2D 編のラストまで来た。

猫本 6 章では、2D ゲームに物理演算 (Physics) とスプライトアニメーション (Mecanim) を取り入れる。また、物理演算にあわせて、衝突判定を行う Collider コンポーネントについても説明された。

  • Unity の Physics (組み込みの物理演算) では、重力や摩擦の計算を担う Rigidbody と、当たり判定を担う Collider という 2 種類のコンポーネントを使う。
  • Rigidbody と Collider にはそれぞれ 2D 版と 3D 版がある。
  • 2D では、Inspector→Add Component→Physics 2D→Rigidbody 2D で、オブジェクトに物理演算が働き始める。猫本の本章でサンプルとして用意されたネコのキャラクターが、気を付けの姿勢ですーっと落下していった。シュールだ。
  • Collider の方は、当たり判定の方式によってコンポーネントが異なる。円形で当たり判定したい場合は、Circle Collider 2D となる。追加すると、Scene ビューで緑の円が表示される。
  • 必ず Rigidbody と Collider の両方が必要なわけではない。例えば、Collider だけを追加した場合、重力で落下したりはしないが、同様に Collider を追加した他のオブジェクトとの衝突は起きる。
  • また、Rigidbody を追加した上で、Inspector→Rigidbody 2D→Body Type を Dynamic から Kinematic に変更した場合も、重力が働かない。
  • Collider は複数組み合わせることもできる。
  • Circle Collider のように接地したとき安定しない場合、転倒することがある。これを防ぐには、Inspector→Rigidbody 2D→Constraints→Freeze Rotation にチェックを入れる。この Constraints には、X 座標や Y 座標を固定するためのオプションもあるようだ。
  • Collider で衝突したときにイベントハンドラが呼び出される。Inspector で Collider の Is Trigger にチェックを入れると、物理演算 (跳ね返り) はなしにして、衝突した相手オブジェクトのイベントハンドラの呼び出しだけを利用することもできる。
  • transform.localScale に Vector3 をセットすることで、スプライトの拡大・縮小・反転ができる。
  • Unity の Mecanim (組み込みのスプライトアニメーション) では、スプライト画像をまとめた Animation Clip を Animation Controller で制御し、それを Animator コンポーネントでオブジェクトにアタッチする。
  • Animation Clip の作成するには、Hierarchy でオブジェクトを選択した状態で、メニューの Window→Animation→Animation を選択すると、Animation ウィンドウが開く。縦長に表示された場合は、ウィンドウサイズを横に伸ばすと、Create ボタンが見える。
  • Create ボタンを押して Animation Clip のファイルを新規保存した後、Add Property ボタンを押して、変化させるプロパティを選択する。画像を切り替える場合は、Sprite Renderer→Sprite。

前の章までより長かったけど、それは当然筆者さんもご存じなので、

  • 本文中で最初にワークフローの全体像が説明される
  • 折り返し地点で、これで前半終わり、ここから後半と説明される
  • 一部の作業は追加のTipsとして、ラストにまとめられている

といった工夫がされていた。