1)ブースト機能の回復アイテムを作成する。
ここではアイテムを作成して、それを取得したらブースト機能が回復するようにします。
・まず、Hierarchyで回復アイテムのオブジェクトを1つ作成しましょう。
・名前は「BoostItem」に変更します。
*「形・色・大きさ」は自分の好きなように設定してください。
オブジェクトができたら次はスクリプトを作成します。
*まずは「TankMovement」スクリプトにコードを追加します。
下記、★★の部分を追加しましょう。
using UnityEngine; using System.Collections; using UnityEngine.UI; public class TankMovement : MonoBehaviour { private int boostCount = 5; public Text boostLabel; public float boostSpeed; public float moveSpeed; public float turnSpeed; private Rigidbody rb; private float movementInputValue; private float turnInputValue; // 一番最初に呼ばれるメソッド void Awake(){ rb = GetComponent<Rigidbody>(); } void Start(){ boostLabel.text = "Boost: " + boostCount; } void Update () { movementInputValue = Input.GetAxis("Vertical"); turnInputValue = Input.GetAxis("Horizontal"); if(Input.GetButtonDown("Boost")){ if(boostCount <= 0) return; rb.velocity = transform.forward * boostSpeed; boostCount -= 1; boostLabel.text = "Boost: " + boostCount; } } void FixedUpdate(){ Move(); // Move()メソッドを呼び出す Turn(); // Turn()メソッドを呼び出す } // 前進・後退のメソッド void Move(){ Vector3 movement = transform.forward * movementInputValue * moveSpeed * Time.deltaTime; rb.MovePosition(rb.position + movement); } // 旋回のメソッド void Turn(){ float turn = turnInputValue * turnSpeed * Time.deltaTime; Quaternion turnRotation = Quaternion.Euler(0f, turn, 0f); rb.MoveRotation(rb.rotation * turnRotation); } // ★★ブースト回数を増加させるメソッド public void AddBoost(int amount){ boostCount += amount; boostLabel.text = "Boost: " + boostCount; } }
・次に、「新たにC#スクリプトを1つ作成」しましょう。
・名前は「BoostItem」に変更。
・この中に下記コードを記載しましょう。
using UnityEngine; using System.Collections; public class Boostitem : MonoBehaviour { private GameObject tank; public int reward; public AudioClip boostGetSound; public GameObject effectPrefab; void Start(){ tank = GameObject.Find("Tank"); } void OnTriggerEnter(Collider other){ if(other.CompareTag("Player")){ // 「Tank」オブジェクトに付いている「TankMovement」スクリプトの情報を「tankBoost」という名前の箱の中に入れる。 TankMovement tankBoost = tank.GetComponent<TankMovement>(); // ブースト回数を増加させるメソッドを呼び出す。 tankBoost.AddBoost(reward); // 効果音を鳴らす。 AudioSource.PlayClipAtPoint(boostGetSound, transform.position); // アイテムを画面から削除する。 Destroy(gameObject); // エフェクトを発生させる GameObject effect = Instantiate(effectPrefab, transform.position, Quaternion.identity) as GameObject; // エフェクトを画面から削除する。 Destroy(effect, 1); } } }
・コードが書けたらいつものようにチェック。
・「BoostItem」オブジェクトに「BoostItem」スクリプトをドラッグ&ドロップします。
・次に、「BoostItem」オブジェクトをクリック。
・「Reward」に設定した数だけブースト機能が回復します。
・「Boost Get Sound」には自分の好きな音を設定しましょう。
・「Effect Prefab」には「KY_effectsのPrefabフォルダー」の中から自分の好きなものを設定しましょう。
ここまでできたら再生ボタンを押してみましょう。
「B」ボタンを押してブースト機能を消費。
次に、BoostItemをゲット。
再び「B」ボタンを押してブーストできたら成功です。
(うまくブースト機能が回復しない人はここを確認!)
・「BoostItem」オブジェクトをクリック。コライダーの「Is Trigger」にチェックが入っているかを確認しましょう。