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

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

【Unity10】色々な種類のボールを生成する!【パズドラ風2】

いつもひよこのたまごをご利用下さいましてありがとうございます!
おかげ様でチュートリアル数も10ゲーム目となりました!
チュートリアル一覧は
こちら からどうぞ!


スポンサーリンク

Unity5.1.1p3 Personal(2015年7月)

前回の続きです〜


前回まででCubeをゲーム画面に表示させることができるようになりました〜

今回は、Cubeの代わりにビリヤードのぼーるを並べてみたいと思います〜しかも、色々な種類のビリヤードのボールです〜

【目標】色々な種類のボールを生成する!

①Assetのダウンロード&インポート

まずはビリヤードのぼーるのAssetをインストールします〜
今回はEight-ball Rackという名前のAssetをダウンロードします〜

f:id:hiyotama:20150731185038p:plain

Asset Storeの使い方が分からない方は、こちらの記事を参照して下さい〜

②Resourcesフォルダに必要なMaterialを移し替える

インポートが完了したら、Resourcesフォルダに必要なMaterialを移します〜

Resourcesフォルダは特別なフォルダで、スクリプトから簡単にアクセスすることができます〜

とりあえずProjectビューからCreate > Folderを選択して新規作成し、名前をResourcesにします〜
続いてその下の階層にMaterialsという名前のフォルダを作成します〜

f:id:hiyotama:20150731190133p:plain
ResourcesフォルダとMaterialsフォルダを新規作成


フォルダができたら、Eight-ball Rack > Materials > 5.0 > ball_01 〜 ball_06を、作成したMaterialsフォルダへ移します〜

f:id:hiyotama:20150731190411p:plain
ドラッグ&ドロップ!


次に、移動させたMaterialの名前を分かりやすいように、英語に変更します〜

f:id:hiyotama:20150731190607p:plain
英語に変更!

③CubeをSphereに変更する

ゲーム画面に出現するのは現在Cubeですが、これだとビリヤードのボールにはなりません〜なので、Sphereオブジェクトに形を変更していきます〜

まずはプレハブ化したCube(Gem)を元に戻します〜

f:id:hiyotama:20150731191045p:plain
ドラッグ&ドロップ!


続いてCubeのMesh Rendererをオフにします〜

f:id:hiyotama:20150731191208p:plain
チェックを外して

f:id:hiyotama:20150731191240p:plain
非表示に!


続いてHierarchyからCreate > 3D Object > Sphereを選択してSphereオブジェクトを作り、Cubeの子オブジェクトにします〜

f:id:hiyotama:20150731191502p:plain
Cubeの子オブジェクトにする


SphereのTransform情報は、Positionはデフォルトのままで、Scaleは全て0.9にしましょう〜

終わったらApplyボタンを押して変更をPrefabに反映して、HierarchyビューにあるCubeは削除します〜

f:id:hiyotama:20150731191849p:plain
編集が完了したらApplyする

④ランダムでSphereにMaterialを貼り付ける

最後にランダムでSphereにMaterialを貼り付けていきます〜
Gemという名前のスクリプトを新規作成し、プレハブのGemに取り付けます〜

using UnityEngine;
using System.Collections;

public class Gem : MonoBehaviour {
	
	public GameObject sphere; //子オブジェクトのSphereオブジェクト
	public string ballName = ""; //Material検索用
	//検索対象のMaterial名
	string[] ballMats = {"Red", "Blue", "Green", "Yellow", "Orange", "Purple"};

void Start () {
		CreateGem();
	}

	public void CreateGem()
	{
		//マテリアルの名前をランダムで選択
		ballName = ballMats[Random.Range(0, ballMats.Length)];
		//Resources > Materials > マテリアル(ランダム)を選択
		Material ballMat = Resources.Load("Materials/" + ballName) as Material;
		//Sphereのマテリアルをランダムで選択したマテリアルに変更
		sphere.GetComponent<Renderer>().material = ballMat;
	}
}

Gem.cs


まずはpublic変数であるsphereに、先ほど作成したSphereオブジェクトを指定します〜

f:id:hiyotama:20150731192903p:plain
ドラッグ&ドロップ!


CreateGemメソッドでは、まずはランダムでマテリアル名を決定しています〜

次に、決定したマテリアル名でMaterialを取得しています〜
Resourcesフォルダは特別だと上で書きましたが、このように「Resources.Load("オブジェクト名")」という形で指定することで、オブジェクトを取得することができます〜
ちなみに「フォルダ名/フォルダ名/オブジェクト名」という感じで、「/」を後ろに付けるとフォルダ名として扱われます〜


最後にSphereオブジェクトのMaterialとして、取得したMaterialを指定しています〜

【結果】

それではゲームを実行してみましょう〜

f:id:hiyotama:20150731193511p:plain


・・・まぁこれでもいいのですが、どうせなら数字を前に持っていきたいです〜

Gemプレハブの下にあるSphereの角度を、以下のように変更して下さい〜

f:id:hiyotama:20150731193827p:plain
SphereのRotationを変更


それでは、もう一度実行してみましょう〜

f:id:hiyotama:20150731193914p:plain


いい感じに数字が見えるようになりました〜


今回はここまでです〜

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