源码
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class FacialMask : MonoBehaviour
{
[SerializeField] Image maskPanel;
#region Private member property
private bool hasCaptureFingerDropPoint = false;
private Vector2 beginTouch = Vector2.zero;
public enum DragDir
{
None,
TurnRight,
TurnLeft
}
private DragDir lastDir = DragDir.None;
private Vector3 maskPlaneOriginPos, backOriginPos;
private Vector3 frontOriginPos, frontOriginEuler;
private Vector2 dragVelocity = Vector2.zero;
[SerializeField]
private RectTransform front, back;
private float hypot = 0f;
private float _splayThresholdValue = 0.50f;
private bool hasSplay = false;
#endregion
#region Public property
public float force
{
get
{
return dragVelocity.magnitude;
}
}
[HideInInspector]
public float splayThresholdValue
{
get
{
return _splayThresholdValue * front.rect.width;
}
set
{
_splayThresholdValue = value;
}
}
public float orginOffsetRatio = 0.5f;
public float dragThresholdValue = Mathf.PI;
[HideInInspector]
public Action<Vector2> splayBeginHandler {
set; get; }
[HideInInspector]
public Action<Vector2> splayHandler {
set; get; }
[HideInInspector]
public Action<Vector2> splayProcess {
set; get; }
#endregion
#region Public methods
public void SetFrontBackSprite( Sprite sprFront, Sprite sprBack )
{
var imgFront = front.GetComponent<Image>();
var imgBack = back.GetComponent<Image>();
imgFront.sprite = sprFront;
imgBack.sprite = sprBack;
imgFront.SetNativeSize();
imgBack.SetNativeSize();
}
#endregion
#region Private methods
private void RecordPosition(