2)「ミサイル発射ボタン」と「ダッシュボタン」を設定する

次は、スマホの画面上に「ミサイル発射ボタン」と「ダッシュボタン」を作っていきます。

まず、下記から「ButtonIcon」をダウンロードしましょう。

http://mono-pro.net/unity-assets/

ダウンロードできたら.zipファイルをダブルクリックして解凍。

解凍した「ButtonIcon」フォルダを「Assets」にドラッグ&ドロップ

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-10-05-12-17-04

今回はこの中の「DashButton」「ShotButton」を使用します。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-10-05-12-19-16


1)画面にボタンを配置する

ボタン画像はそのままではUIとして使えないので「データのタイプを変更」しましょう。

「Texture Type」を「Sprite(2D and UI)」に変更する。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-10-05-12-25-02

・余白をクリック→「Apply」(適用)ボタンを押す。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-10-05-12-25-06

・画像の横に▶︎のマークがついたことを確認しましょう。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-10-05-12-30-51

*ここまでできたら「DashButton」についても同様に変更しましょう。


次に、Canvasの上にボタンを配置します。

まずはCanvasをダブルクリック

設定は下記を参考にやってみましょう。

[33]コントロールボタンを設置する

ボタンの「位置」と「大きさ」は自由です。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-10-05-12-43-01

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-10-05-12-52-26

次は、「ShotShell」スクリプトを改良していきます。


2)スクリプトの改良

・★の部分を改良しましょう。

using UnityEngine;
using System.Collections;
using UnityEngine.UI;

public class ShotShell : MonoBehaviour {

	public GameObject shellPrefab;
	public float shotSpeed;
	public AudioClip shotSound;
	public int shotCount;
	public Text shellLabel;


	void Start(){
		shellLabel.text = "残弾:" + shotCount;
	}

	// ★Updateメソッドをコメントアウトする
	/*
	void Update () {

		if(Input.GetButtonDown("Fire1")){

			if(shotCount < 1)
				return;

			Shot();
			AudioSource.PlayClipAtPoint(shotSound, transform.position);
			shotCount -= 1;
			shellLabel.text = "残弾:" + shotCount;
		}
	}
	*/


	// ★下記のメソッドを追加する
	public void OnShotButtonClicked(){
		
		if(shotCount < 1)
			return;

		Shot();
		AudioSource.PlayClipAtPoint(shotSound, transform.position);
		shotCount -= 1;
		shellLabel.text = "残弾:" + shotCount;
	}


	public void Shot(){

		GameObject shell = (GameObject)Instantiate(shellPrefab, transform.position ,Quaternion.identity);

		Rigidbody shellRigidbody = shell.GetComponent<Rigidbody>();

		shellRigidbody.AddForce(transform.forward * shotSpeed);

		Destroy(shell, 2.0f);
	}

	public void AddShell(int amount){
		shotCount += amount;
		shellLabel.text = "残弾:" + shotCount;
	}
}

改良ができたらチェック

次は、「スクリプトをボタンに付ける」作業を行います。

「Canvas」をクリック→「ShotButton」をクリック→「+」をクリック

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-10-05-13-03-21

<重要ポイント>

「ShotShell」スクリプトの付いている「ShotShell」オブジェクトを「空欄」にドラッグ&ドロップする。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-10-05-13-03-42

「No Function」をクリック→「ShotShell」を選択→「OnStartButtonClicked()」を選択してクリック

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-10-05-13-03-55

・下記の図のようになったら設定完了です。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-10-05-13-04-00

再生ボタンを押してShotButtonを押してみましょう。

押した瞬間に砲弾が発射されたら成功です。


(復習)

同様に「DashButton」も改良してみましょう。

(ヒント1)

・改良するスクリプトは「TankMovement」です。

・この中の「Updateメソッド」の中にある「Boostに関する部分」を「ShotShell」を参考に改良してみましょう。

(ヒント2)

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-10-05-13-30-06

・下の空欄に入るのは「TankMovement」スクリプトが付いているオブジェクトです。

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

Dボタンを押した瞬間ダッシュ(ブースト)したら成功です。