国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

unity實現(xiàn)多點觸控代碼

2020-01-24 02:04:57
字體:
供稿:網(wǎng)友

這是我在論壇看到的,unity多點觸控。感覺還不錯,分享給大家

//用于綁定參照物對象var target : Transform;//縮放系數(shù)var distance = 10.0;//左右滑動移動速度var xSpeed = 250.0;var ySpeed = 120.0;//縮放限制系數(shù)var yMinLimit = -20;var yMaxLimit = 80;//攝像頭的位置var x = 0.0;var y = 0.0;//記錄上一次手機觸摸位置判斷用戶是在左放大還是縮小手勢private var oldPosition1 : Vector2;private var oldPosition2 : Vector2; //初始化游戲信息設(shè)置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 (){  //判斷觸摸數(shù)量為單點觸摸  if(Input.touchCount == 1)  {    //觸摸類型為移動觸摸    if(Input.GetTouch(0).phase==TouchPhase.Moved)    {      //根據(jù)觸摸點計算X與Y位置      x += Input.GetAxis("Mouse X") * xSpeed * 0.02;      y -= Input.GetAxis("Mouse Y") * ySpeed * 0.02;     }  }   //判斷觸摸數(shù)量為多點觸摸  if(Input.touchCount >1 )  {    //前兩只手指觸摸類型都為移動觸摸    if(Input.GetTouch(0).phase==TouchPhase.Moved¦¦Input.GetTouch(1).phase==TouchPhase.Moved)    {        //計算出當(dāng)前兩點觸摸點的位置        var tempPosition1 = Input.GetTouch(0).position;        var tempPosition2 = Input.GetTouch(1).position;        //函數(shù)返回真為放大,返回假為縮小        if(isEnlarge(oldPosition1,oldPosition2,tempPosition1,tempPosition2))        {          //放大系數(shù)超過3以后不允許繼續(xù)放大          //這里的數(shù)據(jù)是根據(jù)我項目中的模型而調(diào)節(jié)的,大家可以自己任意修改          if(distance > 3)          {            distance -= 0.5;          }        }else        {          //縮小洗漱返回18.5后不允許繼續(xù)縮小          //這里的數(shù)據(jù)是根據(jù)我項目中的模型而調(diào)節(jié)的,大家可以自己任意修改          if(distance < 18.5)          {            distance += 0.5;          }        }      //備份上一次觸摸點的位置,用于對比      oldPosition1=tempPosition1;      oldPosition2=tempPosition2;    }  }} //函數(shù)返回真為放大,返回假為縮小function isEnlarge(oP1 : Vector2,oP2 : Vector2,nP1 : Vector2,nP2 : Vector2) : boolean{  //函數(shù)傳入上一次觸摸兩點的位置與本次觸摸兩點的位置計算出用戶的手勢  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方法一旦調(diào)用結(jié)束以后進入這里算出重置攝像機的位置function LateUpdate () {   //target為我們綁定的箱子變量,縮放旋轉(zhuǎn)的參照物  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);}

以上所述就是本文的全部內(nèi)容了,有需要的小伙伴可以參考下

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 桐城市| 景洪市| 安国市| 茌平县| 万山特区| 渝中区| 金川县| 易门县| 疏勒县| 高州市| 客服| 碌曲县| 什邡市| 华蓥市| 连平县| 和平县| 白水县| 泾川县| 遂宁市| 涿鹿县| 郓城县| 简阳市| 福建省| 伊宁市| 武平县| 得荣县| 白玉县| 津市市| 纳雍县| 龙山县| 榆林市| 巧家县| 招远市| 嘉义市| 玉溪市| 洛浦县| 桐庐县| 开封市| 海阳市| 赣榆县| 濮阳县|