1)コードを追加する
「ShotShell」スクリプトの中にコードを追加します。
下記の中で<追加>と書かれている部分のコードを記載しましょう。
using UnityEngine; using System.Collections; public class ShotShell : MonoBehaviour { public GameObject shellPrefab; public float shotSpeed; public AudioClip shotSound; // ★追加 public int shotCount; void Update () { if(Input.GetButtonDown("Fire1")){ // ★追加 returnの働きがポイント! if(shotCount < 1) return; Shot(); AudioSource.PlayClipAtPoint(shotSound, transform.position); // ★追加 shotCountの数値を1ずつ減らす。 shotCount -= 1; } } public void Shot(){ GameObject shell = Instantiate(shellPrefab, transform.position, Quaternion.identity) as GameObject; Rigidbody shellRigidbody = shell.GetComponent<Rigidbody>(); shellRigidbody.AddForce(transform.forward * shotSpeed); Destroy(shell, 2.0f); } }
コードの追加ができたらチェック。
・「Shot Count」に好きな数字を入れてください。この数字が発射できる「砲弾数」になります。
設定が完了したら再生ボタンを押して砲弾を発射してみましょう。
設定した回数だけ発射すると弾切れになったら成功です。
2)returnの働きを覚える
if(shotCount < 1)
return;
を書く位置を下記のように変えてみましょう。
using UnityEngine; using System.Collections; public class ShotShell : MonoBehaviour { public GameObject shellPrefab; public float shotSpeed; public AudioClip shotSound; public int shotCount; void Update () { if(Input.GetButtonDown("Fire1")){ // ★追加 returnの働きがポイント! // //を書いてコメントアウトする。 //if(shotCount < 1) // return; Shot(); // ★★この場所に書いてみましょう! if(shotCount < 1) return; AudioSource.PlayClipAtPoint(shotSound, transform.position); shotCount -= 1; } } public void Shot(){ GameObject shell = Instantiate(shellPrefab, transform.position, Quaternion.identity) as GameObject; Rigidbody shellRigidbody = shell.GetComponent<Rigidbody>(); shellRigidbody.AddForce(transform.forward * shotSpeed); Destroy(shell, 2.0f); } }
変更できたら、チェックをかけて再生してみましょう。
今度はどうなるかを実際に自分で確かめてください。
「return」の含まれたコードを書く場所によって「違い」があったと思います。
if(shotCount < 1)
return;
ここから「return」がどんな働きをしているのかを考えてみましょう。
・確認できたらreturnの書く位置を元に戻してください。