ワンポイントおよびマルチタッチスクリーン操作を実現
2665 ワード
1、unityゲームをIOSやAndroidデバイスに実行すると、デスクトップシステムのマウスの左ボタン操作は自動的に携帯電話の画面上のタッチパネル操作に変えることができるが、マウス操作ではマルチタッチパネルなど、特有のタッチパネル操作を実現できない.unityのinputクラスでは、デスクトップシステムの各種入力機能のほか、携帯電話のタッチパネルに特化した各種機能も含まれている.以下の例では、タッチパネルを実現する方法を説明する.マルチタッチスクリーンなど、このケースはiOSプラットフォームにも適用されます.ありがとうございません.個人的にまとめました.私は雷鋒です.
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Android Touch:MonoBehaviour{//指のタッチパネルの位置を記録します.Vector 2 m_screenpos=new Vector 2()//カメラ移動速度float m_speed=0.1 f;void Start(//マルチタッチパネルInput.multiTouchEnabled=trueを許可します;}void MobileInput() { if (Input .touchCount <=0) { return; } if(Input.touchCount 1)/1指タッチスクリーン.//タッチパネル開始if(Input.touches[0].phaseTouchPhase.Began){//指タッチパネルの位置を記録する.m_screenpos=Input.touches[0].position;}//指が動く.else if(Input.touches[0].phaseTouchPhase.Moved){//モバイルカメラCamera.main.transform.Translate(new Vector 3(Input.touches[0].deltaPosition.xm_speed,Input.touches[0].deltaPosition.ym_speed,0);}//画面から指が離れているif(Input.touches[0].phaseTouchPhase.Ended&&Input.touches[0].phase!=TouchPhase.Canceled){Vector 2 pos=Input.touches[0].position;//指が水平に移動する.if(Mathf.Abs(m_screenpos.x-pos.x)>Mathf.Abs(m_screenpos.y-pos.y){if(m_screenpos.x>pos.x.s.s........(s)x){//指を左にスライドさせます.else{//指が右にスライドします.}//指が垂直に動く.Else{if(m_screenpos.y>pos.y){//指が下にスライドします.}else{//指が上向きにスライドします.}}else if(Input.touchCount>1){//////2本指の位置を記録する.Vector 2 finger 1=new Vector 2();Vector 2 finger 2=new Vector 2()////////////2本指の移動距離を記録する.Vector 2 moiv1=new Vector 2();Vector 2 mov 2=new Vector 2();for(int i=0;i<2;i<2;i+//////////指1と2のタッチ情報を取得する.Touch touch=Input.toucs[i]];if(touch.phaseTouchPhase.Ended){break;}//指が動いている場合.if(touch.phaseTouchPhase.Moved){float mov=0;if(i=0){//指1の位置と移動を取得する.finger 1=touch.position;moiv 1=touch.deltaPosition;}else{//指2の位置と移動を取得します.finger 2=touch.position;mov 2=touch.deltaPosition;//指移動距離を取得します.if(finger 1.x>finger 2.x){mov=moiv 1.x;}else { mov = mov2.x; } if (finger1.y>finger2.y) { mov += moiv1.y; } else { mov += mov2.y; }//指の移動距離に応じてカメラの位置を変えます.Camera.main.transform.Translate(0,0,mov*m_speed); } } } } }
#endif }
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Android Touch:MonoBehaviour{//指のタッチパネルの位置を記録します.Vector 2 m_screenpos=new Vector 2()//カメラ移動速度float m_speed=0.1 f;void Start(//マルチタッチパネルInput.multiTouchEnabled=trueを許可します;}void MobileInput() { if (Input .touchCount <=0) { return; } if(Input.touchCount 1)/1指タッチスクリーン.//タッチパネル開始if(Input.touches[0].phaseTouchPhase.Began){//指タッチパネルの位置を記録する.m_screenpos=Input.touches[0].position;}//指が動く.else if(Input.touches[0].phaseTouchPhase.Moved){//モバイルカメラCamera.main.transform.Translate(new Vector 3(Input.touches[0].deltaPosition.xm_speed,Input.touches[0].deltaPosition.ym_speed,0);}//画面から指が離れているif(Input.touches[0].phaseTouchPhase.Ended&&Input.touches[0].phase!=TouchPhase.Canceled){Vector 2 pos=Input.touches[0].position;//指が水平に移動する.if(Mathf.Abs(m_screenpos.x-pos.x)>Mathf.Abs(m_screenpos.y-pos.y){if(m_screenpos.x>pos.x.s.s........(s)x){//指を左にスライドさせます.else{//指が右にスライドします.}//指が垂直に動く.Else{if(m_screenpos.y>pos.y){//指が下にスライドします.}else{//指が上向きにスライドします.}}else if(Input.touchCount>1){//////2本指の位置を記録する.Vector 2 finger 1=new Vector 2();Vector 2 finger 2=new Vector 2()////////////2本指の移動距離を記録する.Vector 2 moiv1=new Vector 2();Vector 2 mov 2=new Vector 2();for(int i=0;i<2;i<2;i+//////////指1と2のタッチ情報を取得する.Touch touch=Input.toucs[i]];if(touch.phaseTouchPhase.Ended){break;}//指が動いている場合.if(touch.phaseTouchPhase.Moved){float mov=0;if(i=0){//指1の位置と移動を取得する.finger 1=touch.position;moiv 1=touch.deltaPosition;}else{//指2の位置と移動を取得します.finger 2=touch.position;mov 2=touch.deltaPosition;//指移動距離を取得します.if(finger 1.x>finger 2.x){mov=moiv 1.x;}else { mov = mov2.x; } if (finger1.y>finger2.y) { mov += moiv1.y; } else { mov += mov2.y; }//指の移動距離に応じてカメラの位置を変えます.Camera.main.transform.Translate(0,0,mov*m_speed); } } } } }
void Update () {
if (Input.GetKeyUp(KeyCode.Escape))
{
Application.Quit();
}
#if !UNITY_EDITOR && (UNITY_iOS || UNITY_ANDROID) MobileInput(); #else#endif }
private void DesktopInput()
{
// 。
float mx = Input.GetAxis("Mouse X");
float my = Input.GetAxis("Mouse Y");
if (mx!=0|my!=0)
{
// 。
if (Input.GetMouseButtonDown(0))
{
Camera.main.transform.Translate(new Vector3 (mx,my,0));
}
}
}
}