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」にチェックが入っているかを確認しましょう。

