2013年7月6日土曜日

【Unity】はじめての2D Toolkit

Unity 2D Toolkit

Unityで2Dゲーム

飽きもせずにUnityのこと調べてます。
Unityで2Dゲームを作る方法を調べると大体下の2つに行きつく様子。
  • NGUI
    GUI(ボタンとかメニューとか)の作成に強い。
  • 2DToolkit
    AngryBirdみたいなのを作るのに強み。見た目通りの当たり判定を付けたりだとか。
GUI主体ならNGUI、動きのある感じなら2DToolkitって感じかも?
組み合わせて使えるのかな?色々試してみるけど。


見た目通りの衝突判定のあるゲームが作りたいので2DToolkitポチりました。

どうやって使うん

早速インポートしてデモ見てたんだけど…使い方が全く分からん!
ググっても日本語の情報少なめ。
本家のドキュメントをがんばって読むかーと諦めかけたころに下記サイトを見つけました。
ありがたやー。ここみながらやってみたことをメモ。

できたものはこんなの。
ゴロゴロするだけ
  • 重力でゴロゴロ
  • 見た目に合った当たり判定

作り方

1.インポート

・Unity->Windows->Asset Store
・2D Toolkitをインポート
・Demoも含め全部入れた
バージョンはこんなの
全部いりで

2.SpriteCollectionの作成

Spriteの情報はまとめてSpriteCollectionっていうものに入れるらしい。
同一のSpriteCollectionに入ってる画像は一括で描画してくれるとかなんとか。

SpriteCollectionの作成

・(準備)Projectビュー->Create->Folder
  MySpriteCollectionって名前のフォルダ作った
・Projectビュー->Create->tk2d->Sprite Collection
・名前をMySpriteCollectionに変更
SpriteCollectionが出来た

SpriteCollectionに画像を追加

・作ったSpriteCollectionのInspectorビューにあるOpenEditorを押すと
 SpriteCollectionEditorが開く。
Editorを開く
こんなの
・Projectビュー->TK2DROOT->tk2d_demo->demospritecollection->spritesから
 下記3つをSpriteCollectionEditorにドラッグ&ドロップ
SpriteCollectionEditorに追加
・画像が追加されたらEditor右上のCommitを押す
  Editorに変更を加えたら必ずCommitすること。
Commit
でけた
-tk2dってファイルもできるみたいだけど何だろうね。

3.Spriteの配置

・Hierarchy->Create->tk2d->Sprite
 ランダム?な画像が選ばれてるのでさっき作ったMySpriteCollectionにある画像を選びなおす。
・Inspectorビュー->Tk 2d Sprite->CollectionをMySpriteCollectionに変更
・Inspectorビュー->Tk 2d Sprite->Spriteをcrateに変更
Spriteを変更した
・同じようにして適当にground,crate,rockを配置
 名前も分かりやすいように変えとく
・サイズを変える場合はTransform.Scaleではなく、Tk2dSprite.Scaleを変更するらしい
なんかそれっぽくなってきた
まだ再生しても何も動きません。

4.Rigidbodyをつける

重力で動くようにするため配置したSpriteにRigidbodyをつける。

・Inspectorビュー->AddComponent->Physics->Rigidbody

Groundは落ちてっちゃ困るのでIsKinematicをONに。

このまま再生すると地面以外全部落ちてく。

5.当たり判定(Collider)をつくる

1個1個のスプライトに当たり判定を設定していく。

・SpriteCollectionEditorを開き、ColliderType->Box Trimmedを選択
 これで画像に合わせて四角い当たり判定ができるみたい。
 ここもCommitを忘れずに。
Box Trimmed
 groundとcrateはこれでOK。
ななめからみると枠ができてる
Rockについては四角じゃ困るので多角形のColliderを作る必要がある。

・SpriteCollectionEditorでRockを選択し、ColliderTypeをPolygonにする
・緑の枠と白いポッチが出てくるのでこれをマウスで編集する。
Polygon Colliderの編集
・マウスホイールで拡大縮小
・頂点はマウスで移動
・辺をダブルクリックで頂点追加
・頂点をクリックしたままDeleteかBackSpaceで頂点削除
こんな感じ。
ここまでで動かすといくつか不具合が…

岩が前後に落ちていく

手前に落下
2D表示だけど演算は3Dなので当たり前ですね。
各RigidbodyのConstraintsを設定して解決。
奥行き方向をロック

岩の重心がおかしい

岩がうまく転がらずに止まっちゃいました。どうも重心が変みたい。
SpriteCollectionEditorのAnchorをCustomにすることで調整できた。
重心を調整

岩と岩が重なる

岩はColliderTypeをPolygonに設定したんだけどこれだとMeshColliderっていうのになるみたい。
Unityのマニュアルによるとメッシュコライダ同士は衝突できないそうな。
これを解決するためにConvexをオンにする必要があるらしい。

SpriteCollectionEditorのColliderTypeにあるConvexをオンにすることで解決できた。
Convexをオン

6.固定のオブジェクトをまとめる(Static Sprite Batcher)

今回の床のように動かないものはStatic Sprite Batcherっていうものでまとめることができるらしい。
まとめることで以下のようなメリットがある。
  • Hierarchyビューがすっきりする。
  • 描画が軽くなる。
使える条件としては同一のSpriteCollectionを利用している必要があるみたい。
あともしカメラに写りきらない広いステージの場合は複数のStaticSpriteBatcherを使うこと。

・Hierarchy->Create->tk2d->Static Sprite Batcher
・追加したStaticSpriteBatcherにGroundをドラッグ&ドロップ
StaticSpriteBatcherを作成
この状態でStaticSpriteBatcherのInspectorにあるCommitを押すと…
3つのGroundが消えた
Commitの文字がEditに代わり、3つのGroundがHierarchyから消える。
これで複数のオブジェクトが1つになって軽くなるらしい。
再編集したければEditで。

とりあえずこんなぐらいかな。
できた

まとめ

参照したサイトにはRigidbodyのこととか書いてなかったので手探り。
もっといい方法があるのかもしれない。
でもコーディング0でここまでできるのはすごいなぁ。

スポンサーリンク

Related Posts Plugin for WordPress, Blogger...