Unity(C#)初心者・入門者向けチュートリアル ひよこのたまご

AndroidやiOS向けアプリを簡単に作れるゲーム開発環境Unity(ユニティ)の使い方を、チュートリアル方式で一緒に学びましょう!

【Unity6】ひよこを大量発生させる!Physics2D Material, Coroutine, WaitForSeconds【ツムツム風2】

Unity5.0.0f4 Personal(2015年5月)

f:id:hiyotama:20150518132929p:plain

 

前回の続きです〜

今回は、前回までに作成しておいたひよこを、ゲーム開始時に50匹発生させます〜

 

【目標】ゲーム開始と同時にひよこを発生させる

 

【課題1】ひよこをPrefab化する

まずはひよこを1匹Prefab化しておいて、それを元に50匹のひよこを発生させましょう〜Prefab化については以下のエッセンスをご参照下さい〜

 

 

とりあえず黄色のひよこのSprite画像をHierarchyへ置いてオブジェクト化し、名前をPiyoにし、Rigidbody2DとCircle Collider2Dを追加します〜

 

f:id:hiyotama:20150512173027p:plain

Spriteの設定

 

Circle Collider2Dがひよこよりも少しはみ出ているので、ちょうどひよこの外枠と重なるよう、Circle Collider2DのRadiusを0.44に変えておきましょう〜

 

f:id:hiyotama:20150512173234p:plain

Radius=0.44でColliderを画像に重ねる

 

次にひよこ同士がぶつかった時に少しはねるようにするため、Physics2D Materialをひよこに付けます〜

ProjectビューからCreate>Physics2D Matrialで作成し、名前をbound、Frictionを0.2、Bouncinessを0.2に変更して下さい〜

 

f:id:hiyotama:20150513102526p:plain

Physics2D Material

 

ここまで完成したら、ひよこをPrefab化して下さい!

 

f:id:hiyotama:20150512174106p:plain

ドラッグ&ドロップ! 元のPiyoオブジェクトは削除

 

【課題2】スクリプトでひよこを発生させる

ひよこのPrefabが完成したので、Prefabを元にひよこを50匹発生させるballScriptを作成し、MainCameraに付けましょう〜以下ソースです〜

 

 

public変数が2つあります〜1つはballPrefabです〜こっちにはPrefab化したひよこを設定します〜

 

f:id:hiyotama:20150512175512p:plain

ドラッグ&ドロップ! 

 

2つ目のballSprites[ ]は配列を表しており、ここには5種類のひよこのSprite画像を全て指定します〜Sizeのところに5と入力するとElement0〜4が出てくるので、そこにドラッグ&ドロップして下さい〜

 

f:id:hiyotama:20150512190353p:plain

ドラッグ&ドロップ!

 

StartメソッドにてStartCoroutineを実行して、DropBallメソッドを呼び出しています〜コルーチンで呼び出したメソッド内では、WaitForSecondsによって処理を一時停止させることができます〜(後述)

 

続いてDropBallメソッドですが、冒頭でfor文が出ています〜今回は引数count=50なので、for文内を50回繰り返します〜

for文の中で最初にしているのは、InstantiateによってballPrefabを生成しています〜今回注意してほしいのは、Quaternion.AngleAxis(Random.Range(-40, 40) , Vector3.forward)という部分です!これは、生成するPrefabの角度を決定しています〜

第一引数は-40度〜40度で角度をランダムで決定しているのは想像できると思いますが、Vector3.forwardの部分が少し分かりづらいと思います〜Vector3.forwardは手前、つまりZ軸方向を表しているのですが、これは、Z軸方向に一本の棒を突き刺したとし、それを回転軸にしている感じです〜

 

f:id:hiyotama:20150512192711p:plain

赤い棒が回転軸だとして、-40度〜40度をランダムで決定している

 

 続いてspriteIdを0〜4の間で決定して、生成したPrefab(ball)の名前をPiyo0〜Piyo4の間のどれかにしています〜

次に、ballのSprite画像を決定しています〜冒頭で設定したballSpritesの中から、spriteIdと一致する画像を使います〜

最後に、WaitForSecondsにより0.05秒停止してから、次のPrefab生成に戻ります!

 

【結果】

 

f:id:hiyotama:20150512194236p:plain

 

50匹のひよこがランダムで発生しました!

 

今回はここまでです〜

ありがとうございました〜

 

【Unity開発6】下準備【つむつむ風1】

【Unity開発6】ひよこを発生させる【つむつむ風2】

【Unity開発6】ひよこをなぞって消したい!【つむつむ風3】

【Unity開発6】なぞったひよこだけ色を変えたい!【つむつむ風4】

【Unity開発6】スコア機能を付けたい!【つむつむ風5】

【Unity開発6】ひよこExchangeボタン(更新機能)を作りたい!【つむつむ風6】

【Unity開発6】制限時間とゲームオーバーを実装したい!【つむつむ風7】