https://www.assetstore.unity3d.com/jp/#!/content/3283
・Input.Touchesはスマホのタッチイベントを最適化したスクリプト
・スワイプ、ピンチ、ドラッグ、回転、ダブルタップ、ロングタップ、ショートタップ、チャージなどを検出することができる
・タッチが検出できないPCでの動作ではマウスと同様の動きをする
・価格は25$
使い方
Unity 4.5.5
Input.Touhes v1.1.5
InputTouches > InputPrefb > GestrueのプレハブをHierachyに追加
Hierachyに適当なオブジェクトを追加して新規Scriptを追加
//C# サンプルコード
//オブジェクトが有効になった時に呼び出される
void OnEnable() {
//onShortTapE、onDoubleTapEというイベントがあるが、
//onMultiTapEに統合されていおり、
//onShortTapE、onDoubleTapEはいずれ廃止される
//リスナーに登録
//通常のタップとマルチタップを検出する
IT_Gesture.onMultiTapE += OnMultiTap;
//ロングタップ
IT_Gesture.onLongTapE += OnLongTap;
//チャージング(タップしたままホールド時間を随時検出)
IT_Gesture.onChargingE += OnCharging;
//チャージング終了(チャージ後に指が離れた)
IT_Gesture.onChargeEndE += OnChargeEnd;
//ドラッグ開始
IT_Gesture.onDraggingStartE += OnDraggingStart;
//ドラッグ中
IT_Gesture.onDraggingE += OnDragging;
//ドラッグ終了
IT_Gesture.onDraggingEndE += OnDraggingEnd;
}
//オブジェクトが無効になった時に呼び出される
void OnDisable() {
//リスナーの登録を解除
IT_Gesture.onMultiTapE -= OnMultiTap;
IT_Gesture.onLongTapE -= OnLongTap;
IT_Gesture.onChargingE -= OnCharging;
IT_Gesture.onChargeEndE -= OnChargeEnd;
IT_Gesture.onDraggingStartE -= OnDraggingStart;
IT_Gesture.onDraggingE -= OnDragging;
IT_Gesture.onDraggingEndE -= OnDraggingEnd;
}
//以下のメソッドでタッチを検出する
void OnMultiTap(Tap tap){
//do a raycast base on the position of the tap
//対象のオブジェクト(shortTapObj)がタップされているか調べる、
//1つ1つ調べるのは結構面倒くさい、タップだけならAssetStoreのTouchScriptが良いかも
Ray ray = Camera.main.ScreenPointToRay(tap.pos);
RaycastHit hit;
if(Physics.Raycast(ray, out hit, Mathf.Infinity)){
//if the tap lands on the shortTapObj, then shows the effect.
if(hit.collider.transform==shortTapObj){
//place the indicator at the object position and assign a random color to it
Indicator.transform.position=shortTapObj.position;
Indicator.startColor=GetRandomColor();
//emit a set number of particle
Indicator.Emit(30);
}
//if the tap lands on the doubleTapObj
else if(hit.collider.transform==doubleTapObj){
//check to make sure if the tap count matches
if(tap.count==2){
//place the indicator at the object position and assign a random color to it
Indicator.transform.position=doubleTapObj.position;
Indicator.startColor=GetRandomColor();
//emit a set number of particle
Indicator.Emit(30);
}
}
}
}