みーのぺーじ

みーが趣味でやっているPCやソフトウェアについて.Python, Javascript, Processing, Unityなど.

Unity4.3の2D Spriteを使って素直なブロック崩しを作る

Unity4.3が少し前に公開され,2D機能が追加されたようなので,1晩でブロック崩しを作ってみました.製作時間は4時間です.

最初にUnityにて2Dを使用する方法を説明します.プロジェクトの作成画面の下部に2Dか3Dを選択する項目が追加されたようなので,これを2Dにし,プロジェクトを作成します.

f:id:atsuhiro-me:20151103004417p:plain:w300

製作中は,Sceneビューの2Dをオンにしておくと制作しやすいです.

f:id:atsuhiro-me:20151103004418p:plain:w300

Spriteという機能を紹介します.SpriteはTexture Typeの1つなのですが,ProjectからHierarchyにドロップすれば自動で長方形が表示される,便利な機能です.例えば,以下のような画像があったとします.

f:id:atsuhiro-me:20151103004423p:plain:w300

これをAssetフォルダに保存して,Unityに読み込まれたら,InspectorでSpriteに設定します,Sprite ModeをMultipleにすれば1枚の画像から複数のSpriteを作成できます.

f:id:atsuhiro-me:20151103004426p:plain:w300

MultipleならSprite Editorにてエリアを選択することができます.下のような感じで,適当に区切ります.

f:id:atsuhiro-me:20151103004428p:plain:w300

すると下のようにSpriteのサブディレクトリに複数のSpriteができます.

f:id:atsuhiro-me:20151103004430p:plain:w300

これをHierarchyにドロップして位置を調整すれば,こんな感じに2Dで表示されます!すごく便利ですね.

[adsense:block:myad]

f:id:atsuhiro-me:20151103004432p:plain:w300

Spriteの描写順番はSprite Renderer のSorting Layer と Order in Layerから設定できて,例えばBackground, Blocks, Bar, GUI みたいにLayerを作成して,それぞれのSpriteを適切なlayerに設定することで,別のSpriteの影に隠れることはなくなります.シンプルでよい機能ですね.

f:id:atsuhiro-me:20151103004436p:plain:w300

次にPhysicsを見ていきます.原則的に,以前のClassの名前の最後に"2D"というものが新たに追加されているようです.

  • Sprite Renderer
  • Rigidbody 2D
  • Circle Collider 2D
  • Box Collider 2D
  • Polygon Collider 2D
  • Physics Material 2D
  • Spring Joint 2D
  • Distance Joint 2D
  • Hinge Joint 2D
  • Slider Joint 2D

詳しくはここに書いてありますので,簡単にまとめます.3Dと2DのPhysicsは相互作用しません.互いにすり抜けます.あとは3Dのと同じです.

例えば,ballというSpriteがtirggerのCollider2Dに衝突した時にgameoverにする,というbooスクリプトはこんな感じになります.

    def OnTriggerEnter2D(other as Collider2D):
        if other.gameObject.name=="ball":
            Application.LoadLevel("gameover")

Unity の Spriteと2Dを使って素直に作成したブロック崩しはこちらから遊ぶことができます.プロジェクトファイルもこちら

 

参考:Unity 4.3 - 2D Game Development Walkthrough [youtube]  http://www.youtube.com/watch?v=4qE8cuHI93c