Unityでスマホアプリを作る場合、タップ処理は必ず必要になります。
そんな時に毎回コードの書き方を調べるのは大変です。
タップ処理の実装はとても簡単なので、これを機会にぜひ覚えておいてください。
動画もあるので見てから読むと、より理解しやすくなるかと思います。
さらに、今回の方法はスマホとPCの両方から動作確認することができるので、この方法がおすすめです。
はじめに
まず今回使うコードですが、実は「Input.GetMouseButton」を使ってタップ処理を実装することができるのです。
このコードは本来、マウスでタップしたかを判定する時に使われるのですが、スマートフォンでタップした時も判定することができるようになっています。
コードの説明に入る前に、今回実装した動作を動画で確認してみてください。
(動画でカウントしている画像です)
ちなみにこの動画では「タップされたら数を増やす」というコードにしました。
以下から紹介するコードと多少違う箇所があるので注意してください。
コードを書く
ではどのように書けば「タップ処理」を実装できるのか説明していきます。
以下のようなコードを書いてください。
using UnityEngine;
using System.Collections;
public class TAP : MonoBehaviour {
GameObject mainCamera;
GameObject Button;
Camera main;
void Start () {
mainCamera = GameObject.Find ("Main Camera");
Button = GameObject.Find ("Button");
}
void Update () {
//カメラを取得
main = mainCamera.GetComponent <Carera>();
Vector3 mousePos = main.ScreenToWorldPoint (Input.mousePosition);
Collider2D col = Physics2D.OverlapPoint (mousePos);
//タップ確認
if (Input.GetMouseButtonDown (0)) {
if (col == Button.GetComponent<Collider2D> ()) {
//タップされた時の処理
}
}
}
}
簡単な処理なので見るだけでわかる人も多いと思いますが、順番に説明していきます。
まず、このコードに出てくるオブジェクトを紹介します。
コード内で使うオブジェクト
・Button
-> タップされたかを判定するためにコライダーを追加するオブジェクトです。
・mainCamera
-> カメラを取得するためのオブジェクトです。
・main
-> カメラ本体のオブジェクトです。
基本的にはこの3つだけです。実際に導入する方法に合わせて追加などしてください。
オブジェクトを取得
Start( ) 内で「Button」と「mainCamera」のGameObjectを取得しています。
CameraもStart( )で取得してしまうと、失敗することがあったので今回はUpdate( )に書いておきました。
基本的にGameObject.Find( )はStart( )で呼び出した方が良いです。
タップポイントを取得
タップ処理を実装するにあたって、最も肝心なコードだと思います。ここではタップした座標とコライダーを指定してあります。
ScreenToWorldPointはカメラ内の座標、Input.MousePositionでタップした位置を取得しています。
colは「タップした座標に当たり判定を追加する」というものです。
タップを判定する
ここでタップされた時の処理を書き込みます。
まずInput.GetMouseButtonDown(0)は、クリックされたタイミングで呼び出されます。
続いて、そのタップした位置に「Button」のコライダーがあった場合のみ、その中に書いた処理を実行します。
これでコードの説明は完了です。確認してみてください。
まとめ
今回紹介した通り、Unityでタップ処理を実装するのはとても簡単です。
これだけ覚えておけば「ボタンをタップした時」や「バーチャルコントローラーの動作」などに使えるので、絶対に覚えましょう。
Unityには「Input.touches」というコードでタップ処理を追加することができるのですが、私は今回の方法の方が簡単だと思います。
さらに、今回の方法を応用すれば「スワイプ処理」を実装することができます。
【Unity】スワイプ処理をUnityアプリに追加してみた - クリアメモリ
最近のユーザーはスワイプを多用するので、できれば実装した方が良いと思います。
またUnityなら「登録なしで実機テスト」をする方法があります。
【UNITY REMOTE】無料で実機登録不要!その場で実機テストできて最高だった - クリアメモリ
無料のスマホアプリをインストールするだけでできるのでとても便利です。
すでに登録している人も、Buildする時間が短縮できます。
お試しください。
ではまた。