Unity 2D Toolkit |
Unityで2Dゲーム
飽きもせずにUnityのこと調べてます。
Unityで2Dゲームを作る方法を調べると大体下の2つに行きつく様子。
GUI主体ならNGUI、動きのある感じなら2DToolkitって感じかも?
組み合わせて使えるのかな?色々試してみるけど。
参考) 2D系アセットまとめ
見た目通りの衝突判定のあるゲームが作りたいので2DToolkitポチりました。
どうやって使うん
早速インポートしてデモ見てたんだけど…使い方が全く分からん!
ググっても日本語の情報少なめ。
本家のドキュメントをがんばって読むかーと諦めかけたころに下記サイトを見つけました。
ありがたやー。ここみながらやってみたことをメモ。
できたものはこんなの。
ゴロゴロするだけ |
- 重力でゴロゴロ
- 見た目に合った当たり判定
作り方
1.インポート
・Unity->Windows->Asset Store
・2D Toolkitをインポート
・2D Toolkitをインポート
・Demoも含め全部入れた
バージョンはこんなの |
全部いりで |
2.SpriteCollectionの作成
Spriteの情報はまとめてSpriteCollectionっていうものに入れるらしい。
同一のSpriteCollectionに入ってる画像は一括で描画してくれるとかなんとか。
SpriteCollectionの作成
・(準備)Projectビュー->Create->Folder
MySpriteCollectionって名前のフォルダ作った
MySpriteCollectionって名前のフォルダ作った
・Projectビュー->Create->tk2d->Sprite Collection
・名前をMySpriteCollectionに変更
SpriteCollectionが出来た |
SpriteCollectionに画像を追加
・作ったSpriteCollectionのInspectorビューにあるOpenEditorを押すと
SpriteCollectionEditorが開く。
SpriteCollectionEditorが開く。
Editorを開く |
こんなの |
・Projectビュー->TK2DROOT->tk2d_demo->demospritecollection->spritesから
下記3つをSpriteCollectionEditorにドラッグ&ドロップ
下記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でここまでできるのはすごいなぁ。