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

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

【Unity1】ランダムで足場を自動生成!Prefab, Instantiate【ユニティちゃん縦スクロール11】

Unity5.1.1f1 Personal(2015年6月)

 

f:id:hiyotama:20150622010040p:plain

ユニティちゃんライセンス

このコンテンツは、『ユニティちゃんライセンス』で提供されています

 

前回の続きです〜

 

長いことチュートリアルにお付き合い頂きありがとうございました〜これでユニティちゃん横スクロールアクション2Dは最後の記事になります〜

 

今回はランダムで足場を自動生成したいと思います〜

 【目標】ランダムで足場を自動生成する!

 

①足場をPrefab化する

まずは前回作成したStepオブジェクトをPrefab化します〜Prefabについては下記エッセンスに詳しくまとめてありますので、ご参照下さい〜

 

  

Prefabsフォルダを作成し、Stepオブジェクトをドラッグ&ドロップして下さい〜

 

f:id:hiyotama:20150624081339p:plain

ドラッグ&ドロップ!

 

PrefabフォルダにコピーしたGround1をHierarchyにドラッグ&ドロップすれば、たくさんのPrefabを生成できます〜

 

f:id:hiyotama:20150428213157p:plain

初期の足場として5個程配置しておきましょう〜

 

f:id:hiyotama:20150624081715p:plain

Prefabを適当に配置

 

②足場を自動生成する

続いて足場を自動生成しましょう〜

 

スコアが入るラインをscoreUpPosという変数で定義していたことを覚えていますでしょうか〜?過去記事をご参照下さい〜

 

 

CameraScriptで設定されているscoreUpPosを超えた時、ゲーム画面を上にはみ出した位置に、足場を2つずつ生成していきましょう〜

 

生成するのは先ほど作成したStepプレファブです〜以下ソースです〜

 

 

public変数としてstepを宣言しておりますので、PrefabのStepを指定してあげましょう〜

 

f:id:hiyotama:20150624155616p:plain

ドラッグ&ドロップ!

 

scoreUpPosを超えるごとに、CreateStepメソッドを呼び出し、足場を生成しております〜

 

Prefabを生成するにはInstantiateという記述を行います〜第1引数にはpublic変数にて定義したStepプレファブを指定します〜

 

第2引数には位置情報としてVector2を指定します〜Vector2のxには片方は-6.0〜0f、もう片方には0f〜6.0fを指定することにより、ステージの左右にランダムに足場を生成しています〜更に、yのほうにはgatePointに4.0f〜6.0fの数を足した値を設定することで、よりランダムな感じにしております〜

 

第3引数は傾きを指定しますが、今回はstep.transform.rotationというPrefabの傾きをそのまま指定し、特に傾けません〜

 

さあこれで、ランダムに足場を生成することができました!

 

f:id:hiyotama:20150624155951p:plain

足場がどんどん作られていきます

 

③壁を自動生成する

あとは壁を自動生成すれば、ゲームがずっと続くようになります〜

 

Unityちゃんの高さがy軸でいうところの10を超えた時、ゲーム画面からは見えない位置に壁を生成していきましょう〜以下ソースです〜

 

 

先ほどはscoreUpPosで足場を生成していましたが、今回はcreateWallPosという変数を新たに作成し、同じ要領で壁を作り続けています〜

 

先ほどと同じ要領で壁をPrefab化し〜

 

f:id:hiyotama:20150624161310p:plain

ドラッグ&ドロップ!

 

プレファブから最初の壁を生成しておき〜

 

f:id:hiyotama:20150624161450p:plain

ドラッグ&ドロップ!!

 

WallプレファブをCameraScriptに設定します!

 

f:id:hiyotama:20150624161804p:plain

ドラッグ&ドロップ!!!

 

④見えなくなったオブジェクトを削除する

オブジェクトの数は少ないほうがゲームの動作が軽くなりますので、画面から見えなくなったオブジェクトは削除してしまいましょう〜

 

まずは足場の削除をGroundScriptに追記しましょう〜

 

 

FindWithTagによりMainCameraをタグから検索して取得し、足場の高さがMainCameraの高さから6を引いた位置よりも下にきたらDestroyしております〜

 

続いて壁に、DestroyWallScriptを作成しWallプレファブに取り付けます〜以下ソースです〜

 

 

こちらもMainCameraをタグで取得し、壁や床の高さがMainCameraの高さから20を引いた位置よりも下にきたらDestroyしております〜

 

【結果】

ようやくゲームが完成致しました〜

 

f:id:hiyotama:20150624163027p:plain

タイトル画面を

 

f:id:hiyotama:20150624163049p:plain

タップするとゲームがはじまり

 

f:id:hiyotama:20150624163109p:plain

ジャンプで得点を稼ぎ

 

f:id:hiyotama:20150624163136p:plain

下に落ちたらゲームオーバー

 

f:id:hiyotama:20150624163027p:plain

タップしてタイトル画面へ

 

 

長いことありがとうございました、以上でユニティちゃん縦スクロールアクションのチュートリアルは終わりです〜

今後ともどうぞよろしくお願い致します〜

 

【Unity開発1】キャラクターを自動で移動させる【ユニティちゃん横スクロールアクション2D:1/11】

【Unity開発1】壁にぶつかった時にキャラクターを反転させる【ユニティちゃん横スクロールアクション2D:2/11】

【Unity開発1】キャラクターをジャンプさせる!【ユニティちゃん横スクロールアクション2D:3/11】

【Unity開発1】キャラクターをカメラが追いかける!【ユニティちゃん横スクロールアクション2D:4/11】

【Unity開発1】uGUIを使って点数を表示する!【ユニティちゃん横スクロールアクション2D:5/11】

【Unity開発1】タイトル画面とゲームオーバー画面を作る!【ユニティちゃん横スクロール2D:6/11】

【Unity開発1】アニメーションを付ける!【ユニティちゃん横スクロールアクション2D:7/11】

【Unity開発1】バグ発見!無限にジャンプできちゃう!【ユニティちゃん横スクロールアクション2D:8/11】

【Unity開発1】ボタン長押しでジャンプ力を強くしたい!【ユニティちゃん横スクロール2D:9/11】

【Unity開発1】足場を下から突き抜けて、そのまま乗っかりたい!【ユニティちゃん横スクロールアクション2D:10/11】

【Unity開発1】ランダムで足場を自動生成する【ユニティちゃん横スクロールアクション2D:11/11(Fin)】