【Unity 2D】2Dユニティちゃんのデモゲームを勉強する-壊れるブロック編

  • |
【Unity 2D】2Dユニティちゃんのデモゲームを勉強する-壊れるブロック編
   

Unity界隈では話題の「ユニティちゃん」に手を出してみました。


今回からは[2Dユニティちゃん]に付属しているデモゲームのスクリプトなどを勉強していきたいと思います。
まずは、「壊れるブロック」編です。

【過去回】
【Unity 2D】2Dユニティちゃんのスクリプトを勉強する-その1 | albatrus.com
【Unity 2D】2Dユニティちゃんのスクリプトを勉強する-その2 | albatrus.com
【Unity 2D】2Dユニティちゃんのスクリプトを勉強する-その3 | albatrus.com

効果音を鳴らす

効果音に関しては、以下のコードを利用しています。


ブロックに下からぶつかったの衝突判定

2014-10-3-fdsas


これは以前勉強した[Physics2D.OverlapArea]を利用しています。
判定するエリアはブロックの下側です。


transform.lossyScale

私が初めて見るのが[transform.lossyScale]です。
これはGameObjectのScaleを表しています。

恐らく今回は下記赤枠の「衝突判定」を行っています。
2013-10-3-ff


壊れるブロック

衝突判定が上手く判定できた場合、ブロックが壊れます。
これはどのように実装しているのでしょうか?

GameObjectの作成

実は、壊れるアニメーションのブロックを同じ場所に生成をして表現をしています。


ここでは、[Inspector]で指定されたGameObjectを生成しています。

2014-10-3-fdsas

【参考】
Object.Instantiate – Unity Manual

壊れるブロックのスクリプト

壊れるブロックは以下のように作成されています。
2014-10-3-fdsas

4つのパーツを組み合わせてブロックを作成しています。
後は、このパーツを壊れたように表現するのですが、このスクリプトがとても難しいです。

配列

通常の配列ではなく、RigidBodyなどのコンポーネントの配列。


子オブジェクトのコンポーネントを取り出す

「コルーチン」でも登場した、IEnumerableを利用しています。
正直このIEnumerable、良くわかりません。
ただ、どのような処理ができているのかはわかりました。



特にわかりにくいのは以下の部分です


IGroupingは以下のようになっています。

  • TKey (float) : keyの値の型、この例では[r.transform.localPosition.y]がKeyになっている
  • TElement (Rigidbody2D) : 配列の型

【参考】
Unity(C#) 便利なEnumerable -ワンダープラネット
第6回 LINQ基礎編 - @IT

最後に

今回はブロックの処理だけですが、なんとなく頭で理解でしました。
知らないと使えないが、非常に便利な方法を知ることができたので良かったです。



Unityではじめる2Dゲーム作り徹底ガイド スマートフォンでも遊べる本格ゲーム開発に挑戦Unityではじめる2Dゲーム作り徹底ガイド スマートフォンでも遊べる本格ゲーム開発に挑戦
大野 功二

SBクリエイティブ 2014-10-29
売り上げランキング : 7172

Amazonで詳しく見る

Related Posts Plugin for WordPress, Blogger...