2D TOOLKIT でメトロヴァニア2

unity20131117A-001

■■■■■ Unity4.3出ましたね ■■■■■

Unity4.3リリース!

今回のバージョンアップ、2D 機能がとても強化されててとても嬉しい のですが、今まで覚えたアセットの機能と非常にかぶってしまいますね。

・スプライト機能標準装備(インポートした画像をそのままスプライトにできる)
・Unity単体で 1 枚の画像から複数のスプライトを自由に切り出せるようになった(ピボット設定も標準装備)
・シーンにスプライトを即ドロップで配置できる
・Box2D 物理演算機能を統合、2Dに特化したゲームが作れる
・Component → Physics 2D → Polygon Collider で画像通りの当たり判定を生成できる

さて、今まで覚えてきた 2D TOOLKIT や SmoothMoves の今後のバージョンアップがどうなるか色々気になるところです。できればテクスチャアトラスは今後 Unity でサポートされたマルチスプライトのテクスチャアトラスに統合されると嬉しいです。

■■■■■ 閑話休題、みょんの伝説 ■■■■■

本題に戻ります、検証用にまず何か動かして作ってみようということになり、そして、こうなった。

どうしてこうなった?

■■■■■ タイルマップ構成 ■■■■■

今回はタイルマップをどのように構成しているかを書いてみます。当たり判定やレイヤーの設定方法などなど。

■■ シーン内オブジェクトの内訳 ■■

シーン内にはカメラ、プレイヤー、背景のみ配置しています。

unity20131117A-002

  • Cameras (カメラ用親オブジェクト)
    • Back Camera (背景クリア用)
    • Main Camera (背景クリア用)
  • Player
  • Stage001BTM (遠景用タイルマップ)
  • Stage001BTM Render Data (遠景メッシュ)
  • Stage001TM (背景用タイルマップ)
  • Stage001TM Render Data (背景メッシュ)

2D TOOLKIT はタイルマップでレイヤーが指定でき、レイヤー毎に奥行き(つまり Z 座標)が指定できるのですが、どうも描画順序を距離でやっているらしく、プライオリティが破綻しまくります。しょうがないので遠景は別のタイルマップにしています。

■■ タイルマップのレイヤー ■■

タイルマップはこのサンプルでは4つ設定しています。ちなみに、NotCollider、HalfCollider、AbsoluteCollider は便宜上レイヤーにつけた識別用のラベルです。2D TOOLKIT のタイルマップはレイヤーを設定できますが Unity のレイヤーとは別物です。独自に 2D TOOLKIT のレイヤーを作成し、Unity のどのレイヤーに割り当てるかを自由に設定できます。

  • NotCollider (当たり判定なし)
  • HalfCollider (下からぶつかっても衝突しない判定)
  • AbsoluteCollider (完全な当たり判定)
  • Leaf (草や葉)

unity20131117A-003

図の水色の部分が AbsoluteCollider です。これは行ってはいけないところを囲うための当たり判定及び、障害物に使用します。

赤色の部分は HalfCollider ですが、これは何かといいますと、下からジャンプした時は突き抜けるようにします。

具体的にはこんな感じです。

unity20131117A-004

このように、アクションゲームで下からジャンプして乗れる足場に使用できます。やり方は簡単、プレイヤーのレイヤーを Player と PlayerJump の 2 つ用意しておき、ジャンプ中はプレイヤーのレイヤーを PlayerJump にしておきます。

unity20131117A-005

public int iMegaminNormalLayer = 8;     // 通常レイヤー
public int iMegaminJumpLayer = 9;       // ジャンプ中レイヤー

// ジャンプ状態によってレイヤーを切り替える
gameObject.layer = (v3Speed.y > 0f) ? iMegaminJumpLayer : iMegaminNormalLayer;

ただ、この方法は問題があって、上昇中のみ当たり判定がないので、上昇が終わって下降が始まり、横方向にも移動しているとひっかかります。

なので、突き抜ける足場はスプライトにしておき、プレイヤーの座標と比較して自ら当たり判定を切り替えるか、メッシュコライダーの生成方法をいじってあげるかかなと思います。

■■■■■ というわけで、今日は小ネタでした ■■■■■

Unity4.3 の機能強化は非常に嬉しいのですが、Physics 2D には Character Controller が無いんですよね。これ無しで Physics 2D に移行できるのか気になります。とりあえずまずは 2D 機能を使い倒してみてからですね。

そゆわけで、次回 2D 機能の使い方を。

「シェアする」

ツイートツイート