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」になります。

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
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;
    }
}

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

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

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