今回はブロック崩しの「ブロック」の部分をつくっていきます!!
※このプロジェクトは今日からはじめるUnityを参考にして作成しています。
今日からはじめるUnityと一緒にお読みください。
ブロックを作る
今回は「プレハブ」という機能を使うみたいです。
クラスの事ですね。
オブジェクト指向のプログラミングをしたことがない人は、参考サイトにわかりやすく図が載っているので、
そちらをご覧ください。
“Box”という名前のcubeオブジェクトを作成します。
Transformの値を変えて成形します。
プロジェクトタブで”Asset/”に”Prefabs”という名前でフォルダを作成します。
作成した”Prefabs”フォルダにBoxオブジェクトをドラッグアンドドロップします。
こんなことできるんですねw
これが”Box”のプレハブらしいです。
プレハブを作成したらBoxオブジェクトは削除して構わないそうです。
削除しちゃいましたw
”Asset/Scripts”に”BoxInit”というスクリプトを作成します。
コードを書きます。
追加した部分はここだけ
public GameObject boxObjPrefab;
public GameObject boxesObj;
void Awake(){
for(int x = 0; x < 8; x++){
for(int y = 0; y < 5; y++){
GameObject g = Instantiate(boxObjPrefab,boxesObj.transform);
g.transform.position = new Vector3((2f + (1f * y)),0.4f,(-4.2f + (1.2f * x)));
}
}
}
1行目,2行目 : ゲームオブジェクト型の変数を定義.
4行目 : AwakeとはStartよりも早く呼ばれるイベント関数です.Awakeに書くとStartよりも先に実行されます.
5行目~10行目 : for文で横8×縦5にBoxのPrefabをインスタンス化しています.
7行目 : 一旦”g”というGameObject型の変数を作りその中にPrefabをインスタンス化しています.boxesObj.transformというのはこの後説明します.
8行目 : 変数”g”にインスタンス化して入れられたゲームオブジェクトのtransform.positionの値をfor文を使って個々の座標に移動させる.
という事をやっているみたいです。
このスクリプトを”Hako”オブジェクトにアタッチします。
“Box Obj Prefab”と”Boxes Obj”が追加されています。
public GameObject boxObjPrefab;
public GameObject boxesObj
どうやらこれが反映されているみたいです。
引数に使えるんですね。
詳しい説明は参考サイトをご覧ください。
次にBox Obj Prefab にはBoxのPrefabをアタッチ、Boxes Obj には”Boxes”という空のオブジェクトを作成してアタッチします。
これで「play」をすると箱が沢山でてきます。
もう完全に見た目はブロック崩しですねw
Unityの教科書 Unity2019完全対応版 2D&3Dスマートフォンゲーム入門講座 (Entertainment&IDEA) 新品価格 |
ではまた次回!!
Leave a Comment