Unity3D 滑动选牌

10人阅读 评论(0) 收藏 举报
分类:
using UnityEngine;
using System.Collections.Generic;

public class Test : MonoBehaviour {
    float cardWidth = 152;
    float cardHeight = 212;
    private Vector2 touchFirst = Vector2.zero; //手指开始按下的位置  
    private Vector2 touchSecond = Vector2.zero; //手指拖动的位置   
    private float timer;//时间计数器    
    public float offsetTime = 0.1f;//判断的时间间隔  

    public Transform[] HandCards;
    List<Transform> cardsList = new List<Transform>(); 

    void OnGUI()   // 滑动方法02  
    {
        if (Event.current.type == EventType.MouseDown) //判断当前手指是按下事件  
        {
            Debug.Log(Screen.width);
            touchFirst = Event.current.mousePosition;//记录开始按下的位置  
            Debug.Log("滑动开始:" + touchFirst.x + "," + touchFirst.y);
        }

        if (Event.current.type == EventType.MouseDrag)
        {
            timer += Time.deltaTime;  //计时器  

            if (timer > offsetTime)
            {
                timer = 0;
                touchSecond = Event.current.mousePosition; //记录结束下的位置  
                Vector2 slideDirection = touchFirst - touchSecond;//开始减去结束
                float x = slideDirection.x;
                float y = slideDirection.y;
                
                //处理范围内的牌,加入选牌列表
                cardsList.Clear();
                for (int i = 0; i < HandCards.Length; i++)
                {
                    if (HandCards[i].parent.gameObject.activeSelf)
                    {
                        float lossyScaleX = HandCards[i].lossyScale.x;                                                                                  //屏幕缩放损耗
                        float leftPiont = RectTransformUtility.WorldToScreenPoint(null, HandCards[i].position).x - cardWidth * lossyScaleX / 2;         //牌左侧点
                        float rightPoint = RectTransformUtility.WorldToScreenPoint(null, HandCards[i].position).x + cardWidth * lossyScaleX / 2;        //牌右侧点
                        float lossyScaleY = HandCards[i].lossyScale.y;
                        float topPoint = Screen.height - RectTransformUtility.WorldToScreenPoint(null, HandCards[i].position).y + cardHeight * lossyScaleY / 2;    //牌上侧点
                        float bottomPoint = Screen.height - RectTransformUtility.WorldToScreenPoint(null, HandCards[i].position).y - cardHeight * lossyScaleY / 2; //牌下侧点
                        if (x > 0)  //向左滑动
                        {
                            if ((leftPiont > touchSecond.x && leftPiont < touchFirst.x))
                            {
                                if (touchSecond.y > bottomPoint && touchSecond.y < topPoint)
                                {
                                    cardsList.Add(HandCards[i]);
                                }
                            }
                        }
                        else        //向右滑动
                        {
                            if (((leftPiont < touchSecond.x && leftPiont > touchFirst.x)))
                            {
                                if (touchSecond.y > bottomPoint && touchSecond.y < topPoint)
                                {
                                    cardsList.Add(HandCards[i]);
                                }
                            }
                        }
                    }
                }
            }
        }
        else if (Event.current.type == EventType.MouseUp)
        {
            //选中的牌操作
            for (int i = 0; i < cardsList.Count; i++)
            {
                cardsList[i].localPosition = new Vector3(cardsList[i].localPosition.x, cardsList[i].localPosition.y + 50, 0);
            }
            cardsList.Clear();
        }
    }
}

查看评论

unity滚动卡牌选择

  • 2017年10月19日 20:58
  • 12.45MB
  • 下载

棋牌游戏之 触摸滑动-选牌(和欢乐斗地主效果一样)

触摸响应 bool GameLayer::ccTouchBegan(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent) { if(_pWai...
  • themagickeyjianan
  • themagickeyjianan
  • 2014-09-11 16:55:58
  • 2913

棋牌游戏开发之斗地主算法点选牌

这是转载一位博有的....依稀记得..... 斗地主算法之点选牌                            -------                  ...
  • zikehaozhuang24
  • zikehaozhuang24
  • 2015-11-26 11:07:18
  • 3138

Unity 4.6 仿QQ斗地主demo

  • 2015年09月24日 18:08
  • 28.85MB
  • 下载

unity3d 3D卡片滚动效果

本来上个月就改写的文章,但是因为这段时间受到国漫的影响,不停的刷《大圣归来》和《那年那兔那些事儿》两部动漫,以至于很长时间没有写什么新内容给各位看官啦,嘿嘿~~so,大家也应该晓得我是大圣哥哥的自来水...
  • andyhebear
  • andyhebear
  • 2015-08-17 11:36:28
  • 3131

cocos2d-x 浅析斗地主游戏分牌动作

cocos2d-x 浅析斗地主游戏分牌动作 分类: C/C++ Cocos2d-x学习笔记2013-05-17 13:54 461人阅读 评论(0) 收藏 举报 cocos2d-x...
  • linuxheik
  • linuxheik
  • 2013-09-12 10:57:10
  • 1024

cocos creator 斗地主 选牌效果

  • 2018年01月05日 10:21
  • 57KB
  • 下载

ugui 旋转切换卡牌效果

效果图: 地址:https://github.com/zs9024/TurnRound
  • bszk81340089
  • bszk81340089
  • 2016-11-21 10:09:47
  • 1850

NGUI实现翻牌效果

首先把代码贴上来 using UnityEngine; using System.Collections; public class TweenFlipCards : MonoBehaviour ...
  • yuxikuo_1
  • yuxikuo_1
  • 2015-09-01 00:55:45
  • 1927

ngui一个滑动

最近由于工作需要学习UNITY3D,对于做PHP的程序猿挑战性灰常大,unity3D国内相关资料少得可怜唉! 根据需求做个防“天天爱消除”主界面左右滑动窗体的效果,百度搜到雨凇大神的一个帖子 ...
  • luyuncsd123
  • luyuncsd123
  • 2014-04-14 20:06:14
  • 4066
    个人资料
    等级:
    访问量: 5万+
    积分: 1201
    排名: 4万+
    最新评论