21
27

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Unity】スマホ向けタッチ判定(マルチタップ対応)

Posted at

Unityで作成したモバイル向けゲームでのタッチ判定の簡単な実装。
以下のスクリプトを、タップされたときに何かを実行したいオブジェクトに付けてあげればOKです。
(標準で用意されているOnMouseDownでは同時押しの際にうまく反応してくれません)

TouchTest.cs
using UnityEngine;
using System.Collections;

public class TouchTest : MonoBehaviour {

	// Use this for initialization
	void Start () {
	
	}
	
	// Update is called once per frame
	void Update () {
		if(OnTouchDown()){
			Debug.Log("タップされました");
		}
	}

	//スマホ向け そのオブジェクトがタッチされていたらtrue(マルチタップ対応)
	bool OnTouchDown() {
		// タッチされているとき
		if( 0 < Input.touchCount){
			// タッチされている指の数だけ処理
			for(int i = 0; i < Input.touchCount; i++){
				// タッチ情報をコピー
				Touch t = Input.GetTouch(i);
				// タッチしたときかどうか
				if(t.phase == TouchPhase.Began ){
					//タッチした位置からRayを飛ばす
					Ray ray = Camera.main.ScreenPointToRay(t.position);
					RaycastHit hit = new RaycastHit();
					if (Physics.Raycast(ray, out hit)){
						//Rayを飛ばしてあたったオブジェクトが自分自身だったら
						if (hit.collider.gameObject == this.gameObject){
							return true;
						}
					}
				}
			}
		}
		return false; //タッチされてなかったらfalse
	}
}

注意:PC上のエディタでは反応しないので、実機もしくはunity remote等で試す必要があります。

http://docs.unity3d.com/jp/current/ScriptReference/Touch.html
http://docs.unity3d.com/jp/current/ScriptReference/Input.GetTouch.html

21
27
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
27

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?