次に、戦車の砲弾を作ってそれを発射してみます。
1)砲弾オブジェクトを作る
・「Hierarchy」エリアで、「Create」→「3D Object」→「Sphere」をクリック。
・名前は「Shell」(砲弾)に変更
・大きさは自由ですが、ここでは「0.3」に設定します。(*自分の戦車の大きさに合わせて変更してください。)
・色は「Material」を使って自由に変更しましょう。
・「Add Component」で「Rigidbody」を付けましょう。
*「Rigidbody」の「Use Gravity」のチェックを外してください。これでスピードがゆっくりでも砲弾がまっすぐ飛ぶようになります。
2)砲弾をプレファブ化する
・まず、「Assets」内に「Prefabs」という名前のフォルダを作成。
・次に、「Prefabs」フォルダの中に、「Shell」をドラッグ&ドロップします。
これで「Shell」プレファブが作成できました。
・「Hierarchy」にある「Shell」は使用しないので、右クリックで削除(Delete)しておきましょう。
3)砲弾(Shell)を発射するスクリプトを作成する。
・「C# Script」を1つ作成し、名前を「ShotShell」に変更します。
・作成した「ShotShell」スクリプトをダブルクリックしてください。
・下記のコードを記載しましょう。
*横スクロールするとコードの全体を見ることができます。
using UnityEngine; using System.Collections; public class ShotShell : MonoBehaviour { // ここにデータを入れる箱(=変数)を書こう! public GameObject shellPrefab; public float shotSpeed; public AudioClip shotSound; // 命令ブロック(1) void Update () { // もしも「Fire1」というボタンが押されたら(条件) if(Input.GetButtonDown("Fire1")){ // ①Shotという名前の命令ブロック(関数)を実行する。 Shot(); // ②効果音を再生する。 AudioSource.PlayClipAtPoint(shotSound, transform.position); } } // 命令ブロック(2) public void Shot(){ // プレファブから砲弾(Shell)オブジェクトを作成し、それをshellという名前の箱に入れる。 GameObject shell = (GameObject)Instantiate(shellPrefab, transform.position, Quaternion.identity); // Rigidbodyの情報を取得し、それをshellRigidbodyという名前の箱に入れる。 Rigidbody shellRigidbody = shell.GetComponent<Rigidbody>(); // shellRigidbodyに青軸(=z軸)方向の力を加える。 shellRigidbody.AddForce(transform.forward * shotSpeed); // 生成したshellオブジェクトを2秒後に削除する。 Destroy(shell, 2.0f); } }
これでコードが完成しました。
次は、コードを付けるオブジェクトを作成します。
4)空のオブジェクトにコードを付ける!
・「Hierarchy」→「Create」→「 Create Empty」で「空のオブジェクト」を作成
・名前を「ShotShell」に変更
・「Position」と「Rotation」は全て「0」にしておきます。
・この「ShotShell」オブジェクトに「ShotShell」スクリプトをドラッグ&ドロップ
・「Shell Prefab」の空欄には「Shell」プレファブをドラッグ&ドロップ
・「Shot Speed」は「1500」に設定(*好きな数字で構いません。実際に砲弾の飛び方を見て、調整しましょう。)
・「cannon1」という音源データを「Shot Sound」にドラッグ&ドロップ
*事前に「Import New Assets」を使って「音源データ」をUnityの中に入れておきましょう。
・これで設定完了です。
5)「親子関係」を設定する
・「ShotShell」オブジェクトを「Tank」オブジェクトにドラッグ&ドロップします。
これで、「ShotShell」オブジェクトは「Tank」オブジェクトの「子供」になります。
*子供なることによって、親の「Player」が動くと、一緒に動くようになります。
・戦車の砲身(玉の出るところ)に「ShotShell」が来るように位置を調整しましょう。
さあここまでできたら準備完了です。
再生ボタンを押してみましょう。
「control」ボタンを押すたびに「砲弾が発射」されて、同時に「音」が出れば成功です。