【Unity10】色々な種類のボールを生成する!【パズドラ風2】
Unity5.1.1p3 Personal(2015年7月)
前回の続きです〜
前回まででCubeをゲーム画面に表示させることができるようになりました〜
今回は、Cubeの代わりにビリヤードのぼーるを並べてみたいと思います〜しかも、色々な種類のビリヤードのボールです〜
【目標】色々な種類のボールを生成する!
①Assetのダウンロード&インポート
まずはビリヤードのぼーるのAssetをインストールします〜
今回はEight-ball Rackという名前のAssetをダウンロードします〜
Asset Storeの使い方が分からない方は、こちらの記事を参照して下さい〜
②Resourcesフォルダに必要なMaterialを移し替える
インポートが完了したら、Resourcesフォルダに必要なMaterialを移します〜
Resourcesフォルダは特別なフォルダで、スクリプトから簡単にアクセスすることができます〜
とりあえずProjectビューからCreate > Folderを選択して新規作成し、名前をResourcesにします〜
続いてその下の階層にMaterialsという名前のフォルダを作成します〜
ResourcesフォルダとMaterialsフォルダを新規作成
フォルダができたら、Eight-ball Rack > Materials > 5.0 > ball_01 〜 ball_06を、作成したMaterialsフォルダへ移します〜
ドラッグ&ドロップ!
次に、移動させたMaterialの名前を分かりやすいように、英語に変更します〜
英語に変更!
③CubeをSphereに変更する
ゲーム画面に出現するのは現在Cubeですが、これだとビリヤードのボールにはなりません〜なので、Sphereオブジェクトに形を変更していきます〜
まずはプレハブ化したCube(Gem)を元に戻します〜
ドラッグ&ドロップ!
続いてCubeのMesh Rendererをオフにします〜
チェックを外して
非表示に!
続いてHierarchyからCreate > 3D Object > Sphereを選択してSphereオブジェクトを作り、Cubeの子オブジェクトにします〜
Cubeの子オブジェクトにする
SphereのTransform情報は、Positionはデフォルトのままで、Scaleは全て0.9にしましょう〜
終わったらApplyボタンを押して変更をPrefabに反映して、HierarchyビューにあるCubeは削除します〜
編集が完了したら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オブジェクトを指定します〜
ドラッグ&ドロップ!
CreateGemメソッドでは、まずはランダムでマテリアル名を決定しています〜
次に、決定したマテリアル名でMaterialを取得しています〜
Resourcesフォルダは特別だと上で書きましたが、このように「Resources.Load("オブジェクト名")」という形で指定することで、オブジェクトを取得することができます〜
ちなみに「フォルダ名/フォルダ名/オブジェクト名」という感じで、「/」を後ろに付けるとフォルダ名として扱われます〜
最後にSphereオブジェクトのMaterialとして、取得したMaterialを指定しています〜
【結果】
それではゲームを実行してみましょう〜
・・・まぁこれでもいいのですが、どうせなら数字を前に持っていきたいです〜
Gemプレハブの下にあるSphereの角度を、以下のように変更して下さい〜
SphereのRotationを変更
それでは、もう一度実行してみましょう〜
いい感じに数字が見えるようになりました〜
今回はここまでです〜
ありがとうございました〜