1)移動のための「パッド型コントローラー」を設定する

パソコンではなく、スマホもしくはパッドで遊べるように改良していきます。

まずは、自分のBattleTankプロジェクトを「複製(コピー)」しましょう。

複製したプロジェクトの名前の末尾に「_m」を付けてください。

例;BattleTank_m

次に、iPhoneアプリ用に開発モードを切り替えます。

・「File」をクリック→「Build Settings」をクリック

%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-10-22-54

・Platformで「iOS」をクリック

「Symlink Unity Libraries」にチェックを入れる。

「Switch Platform」のボタンを押す。

%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-10-27-09

・変更が完了したら「×ボタン」で閉じましょう。


1)パッド型コントローラーの設置

スマホの画面にはキーボードがありません。

そのため、キャラクターを移動させるための専用パッドをまずはインストールします。

・「Assetsの余白で右クリック」→「Import Package」を選択→「CrossPlatformInput」を選択してクリック

%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-10-09-58

・「Import」ボタンをクリック

%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-10-10-09

「Standard 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-10-10-40

・「Standard Assets」の中の「Prefabs」フォルダの中にある「MobileSingleStickControl」をHierarchyの中にドラッグ&ドロップする。

%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-10-40-43

「JumpButton」は今回は使用しないので、右クリックで削除する。

%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-10-51-42

これでコンロトーラーの準備が整いました。

次はこのコントローラーでプレーヤーを動かすためにスクリプトを改良していきます。

%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-10-55-53


2)スクリプトの改良

今回改良するスクリプトは「TankMovement.cs」になります。

ダブルクリックで開いて、下記のように改良しましょう(★の部分)

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

// ★最初に追加する
using UnityStandardAssets.CrossPlatformInput;

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 () {

		// ★この2行をコメントアウトする
		// movementInputValue = Input.GetAxis("Vertical");
		// turnInputValue = Input.GetAxis("Horizontal");

		// ★下記の2行を追加する
		movementInputValue = CrossPlatformInputManager.GetAxisRaw("Vertical");
		turnInputValue = CrossPlatformInputManager.GetAxisRaw("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;
	}
}

改良ができたらチェック。

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

十字コントローラーで前進・後退・旋回ができれば成功です。