Framwork/Assets/Scripts/Base/MonoBehaviour/Drag/ImageTransformController.cs

59 lines
1.8 KiB
C#

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<ScreenTransformGesture>();
}
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>();
// 移动
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);
}
}
}