日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

IOS触摸屏手势控制镜头旋转与缩放

發布時間:2024/1/1 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 IOS触摸屏手势控制镜头旋转与缩放 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
using UnityEngine; using System.Collections;public class MobileCamera : MonoBehaviour {//用于綁定參照物對象public Transform target;//縮放系數public float distance = 10.0f;//左右滑動移動速度public float xSpeed = 250.0f;public float ySpeed = 120.0f;//縮放限制系數public float yMinLimit = -20;public float yMaxLimit = 80;//攝像頭的位置public float x = 0.0f;public float y = 0.0f;//記錄上一次手機觸摸位置判斷用戶是在左放大還是縮小手勢private Vector2 oldPosition1;private Vector2 oldPosition2;//初始化游戲信息設置void Start(){var angles = transform.eulerAngles;x = angles.y;y = angles.x;// Make the rigid body not change rotationif (rigidbody)rigidbody.freezeRotation = true;}void Update(){//判斷觸摸數量為單點觸摸if (Input.touchCount == 1){//觸摸類型為移動觸摸if (Input.GetTouch(0).phase == TouchPhase.Moved){//根據觸摸點計算X與Y位置x += Input.GetAxis("Mouse X") * xSpeed * 0.02f;y -= Input.GetAxis("Mouse Y") * ySpeed * 0.02f;}}//判斷觸摸數量為多點觸摸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.5f;}}else{//縮小洗漱返回18.5后不允許繼續縮小//這里的數據是根據我項目中的模型而調節的,大家可以自己任意修改if (distance < 18.5){distance += 0.5f;}}//備份上一次觸摸點的位置,用于對比oldPosition1 = tempPosition1;oldPosition2 = tempPosition2;}}}//函數返回真為放大,返回假為縮小bool isEnlarge(Vector2 oP1, Vector2 oP2, Vector2 nP1, Vector2 nP2){//函數傳入上一次觸摸兩點的位置與本次觸摸兩點的位置計算出用戶的手勢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方法一旦調用結束以后進入這里算出重置攝像機的位置void LateUpdate(){//target為我們綁定的箱子變量,縮放旋轉的參照物if (target){//重置攝像機的位置y = ClampAngle(y, yMinLimit, yMaxLimit);var rotation = Quaternion.Euler(y, x, 0);var position = rotation * new Vector3(0.0f, 0.0f, -distance) + target.position;transform.rotation = rotation;transform.position = position;}}float ClampAngle(float angle, float min, float max){if (angle < -360)angle += 360;if (angle > 360)angle -= 360;return Mathf.Clamp(angle, min, max);} }


原文地址點擊這里

總結

以上是生活随笔為你收集整理的IOS触摸屏手势控制镜头旋转与缩放的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。