美文网首页
鼠标左右拖动

鼠标左右拖动

作者: 萧非子 | 来源:发表于2017-10-25 16:38 被阅读15次

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using DG.Tweening;
using UnityEngine.EventSystems;
using System;
//点击图片,图片居中放大显示,向左拖动中心放大的图片,图片向左翻转,向右拖动中心放大的图片,图片向右翻转
public class ClickImage1019_Image : MonoBehaviour, IDragHandler, IPointerClickHandler,IBeginDragHandler,IEndDragHandler
{
private Image curImage;//当前图片正面
private Image image_image;//当前图片背面,当前图片子图片
private bool isZ = true;//是否为正面=是

private Vector2 mouseDown = Vector2.zero;//鼠标按下时的坐标
private Vector2 mouseUp = Vector2.zero;//鼠标抬起时的坐标
private void Awake()
{
    curImage = GetComponent<Image>();
    image_image = transform.Find("ImageBack").GetComponent<Image>();
    image_image.transform.gameObject.SetActive(false);
}

void Start()
{

}
//显示背面
void ShowBack()
{
    curImage.rectTransform.rotation = Quaternion.identity;
    isZ = false;

    image_image.gameObject.SetActive(true);
}
//显示正面,隐藏背面
void HideBack()
{
    curImage.rectTransform.rotation = Quaternion.identity;
    isZ = true;

    image_image.gameObject.SetActive(false);
}
//点击接口:
public void OnPointerClick(PointerEventData eventData)
{
    OnButtonClick();
}
//拖动开始接口
public void OnBeginDrag(PointerEventData eventData)
{
     mouseDown = eventData.position;     
}
//拖动中接口
public void OnDrag(PointerEventData eventData)
{
}
//拖动结束接口
public void OnEndDrag(PointerEventData eventData)
{
     mouseUp = eventData.position;
    //拖动图片
    OnImageDrag();
}
//点击图片,图片居中放大显示,其余图片随机移动
public void OnButtonClick()
{
    if (curImage.transform.localPosition == Vector3.zero)//如果图片已经在中心,就返回,不执行任何操作
    {
        return;
    }
    ClickImage1019_Panel._instance.MoveImage();//其它图片随机移动旋转

    curImage.transform.DOLocalMove(Vector3.zero, 0.3f);//移动到中心
    curImage.transform.DOLocalRotate(Vector3.zero, 0.3f);//旋转为0度
    curImage.transform.DOScale(new Vector3(2.5f, 2.2f, 2), 0.3f);//放大为2
    curImage.transform.SetAsLastSibling();//深度为最前
}
//拖动图片,图片翻转
public void OnImageDrag()
{
    if (curImage.transform.localPosition == Vector3.zero)//如果图片在中心位置,就可以拖动翻转
    {       
       if (isZ)//如果图片是正面 就翻为反面
        {
            Invoke("ShowBack", 0.35f);//0.35f后显示处反面图片(子图片);
            ClickImage1019_Panel._instance.isF = true;
        }
        else//如果图片是反面,就翻为正面
        {
            Invoke("HideBack", 0.35f);//0.35f后隐藏反面图片(子图片)
            ClickImage1019_Panel._instance.isF = false;
        }

        if (mouseUp.x> mouseDown.x)//如果向右滑动,图片向右翻转
        {
            curImage.transform.DOLocalRotate(new Vector3(0, -180, 0), 0.3f);//图片翻转-180动画,持续0.3f;
            isZ = false;
        }
        else//如果向左滑动,图片向左翻转
        {
            curImage.transform.DOLocalRotate(new Vector3(0, 180, 0), 0.3f);//图片翻转180动画,持续0.3f;
            isZ = false;
        }
    }

}

}

相关文章

网友评论

      本文标题:鼠标左右拖动

      本文链接:https://www.haomeiwen.com/subject/xfaqpxtx.html