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

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

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

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


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


今回はここまでです〜

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