【Unity6】ひよこを大量発生させる!Physics2D Material, Coroutine, WaitForSeconds【ツムツム風2】
Unity5.0.0f4 Personal(2015年5月)
前回の続きです〜
今回は、前回までに作成しておいたひよこを、ゲーム開始時に50匹発生させます〜
【目標】ゲーム開始と同時にひよこを発生させる
【課題1】ひよこをPrefab化する
まずはひよこを1匹Prefab化しておいて、それを元に50匹のひよこを発生させましょう〜Prefab化については以下のエッセンスをご参照下さい〜
とりあえず黄色のひよこのSprite画像をHierarchyへ置いてオブジェクト化し、名前をPiyoにし、Rigidbody2DとCircle Collider2Dを追加します〜
Spriteの設定
Circle Collider2Dがひよこよりも少しはみ出ているので、ちょうどひよこの外枠と重なるよう、Circle Collider2DのRadiusを0.44に変えておきましょう〜
Radius=0.44でColliderを画像に重ねる
次にひよこ同士がぶつかった時に少しはねるようにするため、Physics2D Materialをひよこに付けます〜
ProjectビューからCreate>Physics2D Matrialで作成し、名前をbound、Frictionを0.2、Bouncinessを0.2に変更して下さい〜
Physics2D Material
ここまで完成したら、ひよこをPrefab化して下さい!
ドラッグ&ドロップ! 元のPiyoオブジェクトは削除
【課題2】スクリプトでひよこを発生させる
ひよこのPrefabが完成したので、Prefabを元にひよこを50匹発生させるballScriptを作成し、MainCameraに付けましょう〜以下ソースです〜
public変数が2つあります〜1つはballPrefabです〜こっちにはPrefab化したひよこを設定します〜
ドラッグ&ドロップ!
2つ目のballSprites[ ]は配列を表しており、ここには5種類のひよこのSprite画像を全て指定します〜Sizeのところに5と入力するとElement0〜4が出てくるので、そこにドラッグ&ドロップして下さい〜
ドラッグ&ドロップ!
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軸方向に一本の棒を突き刺したとし、それを回転軸にしている感じです〜
赤い棒が回転軸だとして、-40度〜40度をランダムで決定している
続いてspriteIdを0〜4の間で決定して、生成したPrefab(ball)の名前をPiyo0〜Piyo4の間のどれかにしています〜
次に、ballのSprite画像を決定しています〜冒頭で設定したballSpritesの中から、spriteIdと一致する画像を使います〜
最後に、WaitForSecondsにより0.05秒停止してから、次のPrefab生成に戻ります!
【結果】
50匹のひよこがランダムで発生しました!
今回はここまでです〜
ありがとうございました〜
【Unity開発6】ひよこをなぞって消したい!【つむつむ風3】
【Unity開発6】なぞったひよこだけ色を変えたい!【つむつむ風4】
【Unity開発6】ひよこExchangeボタン(更新機能)を作りたい!【つむつむ風6】
【Unity開発6】制限時間とゲームオーバーを実装したい!【つむつむ風7】