using System; using TouchScript.Gestures.TransformGestures; using UnityEngine; namespace HK { public class ImageTransformController : MonoBehaviour { private ScreenTransformGesture transformGesture; // 移动速度系数 public float moveSpeed = 1f; // 缩放速度系数 public float scaleSpeed = 0.01f; // 旋转速度系数 public float rotateSpeed = 1f; private void Awake() { transformGesture = GetComponent(); } private void OnEnable() { transformGesture.Transformed += OnTransformed; } private void OnDisable() { transformGesture.Transformed -= OnTransformed; } private void OnTransformed(object sender, EventArgs e) { Debug.Log("position " + transformGesture.DeltaPosition); Debug.Log("scale " + transformGesture.DeltaScale); Debug.Log("rotation " + transformGesture.DeltaRotation); var rectTransform = transform.GetComponent(); // 移动 rectTransform.anchoredPosition3D += transformGesture.DeltaPosition * moveSpeed; // 缩放 float scaleFactor = transformGesture.DeltaScale > 1 ? transformGesture.DeltaScale * scaleSpeed : 1 / (2 - transformGesture.DeltaScale) * scaleSpeed; Vector3 newScale = transform.localScale * scaleFactor; newScale = Vector3.Max(newScale, Vector3.one * 0.5f); // 最小缩放限制 newScale = Vector3.Min(newScale, Vector3.one * 3f); // 最大缩放限制 transform.localScale = newScale; // 旋转 transform.Rotate(0, 0, transformGesture.DeltaRotation * rotateSpeed, Space.Self); } } }