まず、タッチ配列であるいくつかのInput.touches構造は、各レコードは、タッチスクリーン上の指の状態を表しています。各指のタッチを記述するためのInput.touchesています。
fingerId |
触れただけインデックス |
ポジション |
タッチスクリーンの位置 |
時間に参加 |
最終状態からの経過時間の現在の状態に |
tapCount |
ヒット。Andoridデバイスをクリックしてカウントされません、このメソッドは常に1を返します。 |
デルタ位置 |
画面の最後の位置からの変更 |
段階 |
位相、すなわち画面運転状態 |
相(状態)これらの種類があります。
始めた |
ちょうど指が画面に触れます |
移動 |
画面上で指を動かします |
定常 |
指が画面に触れるが、最後以来しばらく動きませんでした |
終了しました |
画面から指 |
キャンセル |
追跡システムは、同時にタッチ面上でそのような機器の理由又は5上のタッチポイントを無効
|
ゲーム内のUnityは、電話のタッチスクリーンと交換することができるマウスの左ボタンの操作を実行しているが、多点タッチを置き換えることはできません。(それはあなたがタッチスクリーンにも対応できるようgetaxisとgetmousebuttonメソッドを呼び出す電話で言うことです)
以下は、電話上で動作することにより回転し、ズームコード達成されます
System.Collectionsを使用しました。 System.Collections.Genericを使用しました。 UnityEngineを使用しました。 パブリッククラスプレーヤー:MonoBehaviour { 公共フロートrotateSpeed。 公共ベクトル2 nTouchPos1。 公共ベクトル2 nTouchPos2。 公共ベクトル2 oTouchPos1。 公共ベクトル2 oTouchPos2。 //更新は、フレームごとに一度呼び出され ボイド更新() { //旋转 場合(Input.GetMouseButton(0)) { IF(Input.touchCount == 1) { (Input.GetTouch(0)== .phase TouchPhase場合。移動) { DEBUG.LOG( "开始旋转")。 moveX = Input.GetTouch(0).deltaPosition.xフロート。 DEBUG.LOG( "滑动的距离" + moveX)。 transform.Rotate(Vector3.up * -rotateSpeed * moveX * Time.deltaTime)。 } } } ZoomInOut()。 (this.transform.position.y> 0)であれば { 返します。 } this.transform.Translate(新規のVector3(0、0.5F、0)* Time.deltaTime)。 } BOOL IsEnLarge(ベクトル2 nPos1、ベクトル2 nPos2、ベクトル2 oPos1、ベクトル2 oPos2) { フロートNDIS = Vector2.Distance(nPos1、nPos2)。 フロートODIS = Vector2.Distance(oPos1、oPos2)。 (NDIS <ODIS)場合 、{ falseを返します。 } 他 { trueを返します。 } } ボイドZoomInOut() { IF(Input.touchCount == 2) { IF(Input.GetTouch(0)== .phase TouchPhase.Moved || Input.GetTouch(1).phase == TouchPhase.Moved) { nTouchPos1 = Input.GetTouch(0).position。 nTouchPos2 = Input.GetTouch(1).position。 IF(IsEnLarge(nTouchPos1、nTouchPos2、oTouchPos1、oTouchPos2)) { するVector3 nScale = transform.localScale * 1.01f。 transform.localScale =新しいのVector3(nScale.x、nScale.y、nScale.z)。 } 他 { するVector3 nScale = transform.localScale * 0.99f。 transform.localScale =新しいのVector3(nScale.x、nScale.y、nScale.z)。 } oTouchPos1 = nTouchPos1。 oTouchPos2 = nTouchPos2。 } } } }