unity 多點觸控(放大,縮小),unity觸控

來源:互聯網
上載者:User

unity 多點觸控(放大,縮小),unity觸控

//用於綁定參照物對象  var target : Transform;  //縮放係數  var distance = 10.0;  //左右滑動移動速度  var xSpeed = 250.0;  var ySpeed = 120.0;  //縮放限制係數  var yMinLimit = -20;  var yMaxLimit = 80;  //網路攝影機的位置  var x = 0.0;  var y = 0.0;  //記錄上一次手機觸摸位置判斷使用者是在左放大還是縮小手勢  private var oldPosition1 : Vector2;  private var oldPosition2 : Vector2;    //初始化遊戲資訊設定  function Start () {      var angles = transform.eulerAngles;      x = angles.y;      y = angles.x;        // Make the rigid body not change rotation      if (rigidbody)          rigidbody.freezeRotation = true;  }    function Update ()  {      //判斷觸摸數量為單點觸摸      if(Input.touchCount == 1)      {          //觸摸類型為移動觸摸          if(Input.GetTouch(0).phase==TouchPhase.Moved)          {              //根據觸摸點計算X與Y位置              x += Input.GetAxis("Mouse X") * xSpeed * 0.02;              y -= Input.GetAxis("Mouse Y") * ySpeed * 0.02;            }      }        //判斷觸摸數量為多點觸摸      if(Input.touchCount >1 )      {          //前兩隻手指觸摸類型都為移動觸摸          if(Input.GetTouch(0).phase==TouchPhase.Moved||Input.GetTouch(1).phase==TouchPhase.Moved)          {                  //計算出當前兩點觸摸點的位置                  var tempPosition1 = Input.GetTouch(0).position;                  var tempPosition2 = Input.GetTouch(1).position;                  //函數返回真為放大,返回假為縮小                  if(isEnlarge(oldPosition1,oldPosition2,tempPosition1,tempPosition2))                  {                      //放大係數超過3以後不允許繼續放大                      //這裡的資料是根據我項目中的模型而調節的,大家可以自己任意修改                      if(distance > 3)                      {                          distance -= 0.5;                      }                  }else                  {                      //縮小洗漱返回18.5後不允許繼續縮小                      //這裡的資料是根據我項目中的模型而調節的,大家可以自己任意修改                      if(distance < 18.5)                      {                          distance += 0.5;                      }                  }              //備份上一次觸摸點的位置,用於對比              oldPosition1=tempPosition1;              oldPosition2=tempPosition2;          }      }  }    //函數返回真為放大,返回假為縮小  function isEnlarge(oP1 : Vector2,oP2 : Vector2,nP1 : Vector2,nP2 : Vector2) : boolean  {      //函數傳入上一次觸摸兩點的位置與本次觸摸兩點的位置計算出使用者的手勢      var leng1 =Mathf.Sqrt((oP1.x-oP2.x)*(oP1.x-oP2.x)+(oP1.y-oP2.y)*(oP1.y-oP2.y));      var leng2 =Mathf.Sqrt((nP1.x-nP2.x)*(nP1.x-nP2.x)+(nP1.y-nP2.y)*(nP1.y-nP2.y));      if(leng1<leng2)      {           //放大手勢           return true;      }else      {          //縮小手勢          return false;      }  }    //Update方法一旦調用結束以後進入這裡算出重設攝像機的位置  function LateUpdate () {        //target為我們綁定的箱子變數,縮放旋轉的參照物      if (target) {                   //重設攝像機的位置          y = ClampAngle(y, yMinLimit, yMaxLimit);          var rotation = Quaternion.Euler(y, x, 0);          var position = rotation * Vector3(0.0, 0.0, -distance) + target.position;            transform.rotation = rotation;          transform.position = position;      }  }    static function ClampAngle (angle : float, min : float, max : float) {      if (angle < -360)          angle += 360;      if (angle > 360)          angle -= 360;      return Mathf.Clamp (angle, min, max);  }  


 


unity3d 多點觸控

910297670加我qq告訴你
 
android想要利用多點觸控放大或者縮小一個view該怎實現

放大縮小view方法有很多。
1.animation,在xml裡寫齣動畫,讓他放大,然後不恢複。
2.如果是個imageview(圖片),可以將他的一個屬性設定為這樣android:scaleType="matrix",然後在代碼裡操作這個矩陣。獲得放大縮小的效果。
3.如果是自訂的view,在canvas裡放大縮小就很容易了

多點觸控,就是重寫onTouchEvent(MotionEvent event){}
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.