unity クリックした位置にオブジェクトをランダムに発射しよう。コインゲーム作り② Unity学習29
今回は前回に引き続き、コインゲームを作って行く中で、
クリックした場所にオブジェクトを発射する方法と、色んなオブジェクトを
指定して、ランダムに発射できるスクリプトを作っていきます。
クリックした位置にオブジェクトをランダムに発射する方法!
※今回は前回のコインゲーム作りの続きなので下記リンクを参考にしてください。
使ってるアセットやスクリプトなんかが載っています。
まず、Project内にある前回インストールしたコインアセットの
LiquidFire Package4⇨Devtoid - Gold Coins⇨3D Assets⇨Copper Coin-Single⇨
Prefabsにある②のシルバーコインを前回の記事で紹介したゴールドコインに色をつけて大きさを変えるやり方で、
色を表示させるようにして大きさを変えてOriginal Prefabとして作成してください。
今回もInspector内にAdd Componentから③のRigidbodyと
④を飛ばして笑笑
⑤のBox Colliderを追加するのですが、前回のようにBoxColliderの値を
同じにしてもずれてしまいます。
ただやる事は簡単で、Box Collider内にあるCenterのXの値を
-0.37に変えるだけでコライダーの位置がコインと同じ位置に戻ります。
Hierarchy内にある前回Shootスクリプトをアタッチしてある
ゲームオブジェクトをクリックして今回、Shootスクリプトを
クリックした場所にオブジェクトを作成するのと、何回かに1回レアなオブジェクトが
出てくるような形で変更していきます。
始めての方は、空のGameObjectを作成してその中にShootスクリプトを
アタッチしてください。
次のコードをコピー&ペーストするか、同じ記述にしましょう。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Shoot : MonoBehaviour { //int型を変数GoldCoinで宣言して値を5にします。 const int GoldCoin = 5; //int型を変数coinCountで宣言します。 int coinCount; //Inspectorからオブジェクトの指定を配列毎に出来るようにするよ! public GameObject[] coinPrefabs; public GameObject[] coinSquarePrefabs; //各種パラメーターの設定を出来るようにします。 public float speed; public float distance; public float coinWidth; void Update() { //マウスの左クリックが押されたらShot関数を使用するよ! if (Input.GetButtonDown("Fire1")) Shot(); } //オブジェクトをプレファブをランダムに1つ選びます。 GameObject Samplecoin () { GameObject prefab = null; //5回に一回coinPrefab配列に設定されたオブジェクトを選択。 if (coinCount % GoldCoin == 0) { int index = Random.Range(0, coinPrefabs.Length); prefab = coinPrefabs[index]; } else { int index = Random.Range(0, coinSquarePrefabs.Length); prefab = coinSquarePrefabs[index]; } coinCount++; return prefab; } Vector3 InstantiatePosition () { //画面のサイズとInputの割合からキャンディの生成のポジションを計算します。 float x = coinWidth * (Input.mousePosition.x / Screen.width) - (coinWidth / 2); return transform.position + new Vector3(x, 0, 0); } public void Shot () { //プレファブからオブジェクトの生成をします。 GameObject coins = (GameObject)Instantiate( Samplecoin(), InstantiatePosition(), Quaternion.identity); //生成したオブジェクトのRigidbodyを取得して力と回転を加えます。 Rigidbody coinsRigidbody = coins.GetComponent<Rigidbody>(); coinsRigidbody.AddForce(transform.forward * speed); coinsRigidbody.AddTorque(new Vector3(0, distance, 0)); } }
変更、完成したら、前回作ったゴールドコインを
Coin PrefabsのSizeを1にして、Element0にドラッグ&ドロップします。
Coin Prefabsに設定されたオブジェクトは、今回5回に一回生成されるようになっています。
レアなオブジェクトやあまり出現させたくないオブジェクトを設定するといいですね!
次に今回作ったシルバーコインをCoin Square PrefabsのSizeを1にして、
Element0にドラッグ&ドロップしましょう!
余談ですがSize数を増やしていろんなオブジェクトを入れると
ランダムに選択して生成してくれるようになっているので、
色々試してみてください。
最後に、Coin Widthの値を5に変更して
発射位置の広さを選択します。
お好みで小さくしたり大きくしてみてください。
では!再生してみましょう!
5回に一回ゴールドコインが出てきましたね!笑笑
今度は、下に落下したらオブジェクトが消える方法
なんかを記述していきたいと思います。
ご視聴ありがとうございました!
今日のゆうきさんのゲーム実況動画はコチラ!
関連記事
※本格的に3Dゲームを作っていきたい方は下記カテゴリを参考にしてください。www.unityprogram.info
※オススメの無料アセットは下記カテゴリより。便利なアセットが有ます。
www.unityprogram.info
※Unityを学習していきたい方は下記カテゴリを覗いて見てください。
www.unityprogram.info
※実際に使って読んでみたオススメの本は下記カテゴリからご覧ください。
www.unityprogram.info
※初心者に向けた簡単な記事は下記カテゴリより。
www.unityprogram.info