(22)ブースト機能の回復アイテムの作成

1)ブースト機能の回復アイテムを作成する。

ここではアイテムを作成して、それを取得したらブースト機能が回復するようにします。

・まず、Hierarchyで回復アイテムのオブジェクトを1つ作成しましょう。

・名前は「BoostItem」に変更します。

*「形・色・大きさ」は自分の好きなように設定してください。

スクリーンショット 2016-05-24 10.52.49

オブジェクトができたら次はスクリプトを作成します。

*まずは「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」オブジェクトをクリック。

スクリーンショット 2016-05-24 12.00.52

「Reward」に設定した数だけブースト機能が回復します。

「Boost  Get Sound」には自分の好きな音を設定しましょう。

「Effect Prefab」には「KY_effectsのPrefabフォルダー」の中から自分の好きなものを設定しましょう。

ここまでできたら再生ボタンを押してみましょう。

「B」ボタンを押してブースト機能を消費。

次に、BoostItemをゲット。

再び「B」ボタンを押してブーストできたら成功です。

(うまくブースト機能が回復しない人はここを確認!)

「BoostItem」オブジェクトをクリック。コライダーの「Is Trigger」にチェックが入っているかを確認しましょう。