Unity 白猫操作小实例

最近师兄找我说白猫的操作如何做,  0.0 结果白猫没有android的客户端玩不了,看了下视频介绍就简单做了下

效果图:

 

核心代码:

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System;

public class Test : MonoBehaviour {

    private Test() { }

    private Vector3 startMouseDown;
    private Vector3 lastMouseDown;
    private float pressTimer;
    private bool isCounter;             //开始计数
    private bool isDrag;                //开始拖动
    private bool isLasting;             //开始持久点击

    public float pressTime;             //单击
    public float pressLastingTime;      //持久点击
    public float dragDistance;          //拖动大于多少才开始生效

    #region 事件
    public static Action<Vector3> StartPressEvent;
    public static Action<Vector3> EndPressEvent;

    public static Action<Vector3> StartDragEvent;
    public static Action<Vector3> EndDragEvent;

    public static Action<Vector3> StartLastingEvent;
    public static Action<Vector3> EndLastingEvent;
    #endregion

    #region 测试方法
    void Awake()
    {
        StartPressEvent += StartPress;
        EndPressEvent += EndPress;

        StartDragEvent += StartDrag;
        EndDragEvent += EndDrag;

        StartLastingEvent += StartLasting;
        EndLastingEvent += EndLasting;
    }

    private void StartPress(Vector3 v)
    {
        Debug.Log("开始单击事件");
    }

    private void EndPress(Vector3 v)
    {
        Debug.Log("结束单击事件");
    }

    private void StartDrag(Vector3 v)
    {
        Debug.Log("开始拖动事件");
    }

    private void EndDrag(Vector3 v)
    {
        Debug.Log("结束拖动事件");
    }

    private void StartLasting(Vector3 v)
    {
        Debug.Log("开始持续点击事件");
    }

    private void EndLasting(Vector3 v)
    {
        Debug.Log("结束持续点击事件");
    }
    #endregion

    // Update is called once per frame
    void Update () {

        if (Input.GetMouseButtonDown(0))
        {
            isCounter = true;
            startMouseDown = Input.mousePosition;
        }

        if (Input.GetMouseButtonUp(0))
        {
            lastMouseDown = Input.mousePosition;
            isCounter = false;

            if (isDrag)
            {
                //拖动
                if (EndDragEvent != null) EndDragEvent(Input.mousePosition);
                isDrag = false;
            }
            else if (isLasting)
            {
                //持久点击
                if (EndLastingEvent != null) EndLastingEvent(Input.mousePosition);
                isLasting = false;
            }
            else
            {
                //单击
                if (EndPressEvent != null) EndPressEvent(Input.mousePosition);
            }

        }

        if (isCounter)
        {
            //开始计数
            pressTimer += Time.deltaTime;
        }
        else
        {
            if (pressTimer > 0 && pressTimer < pressTime)
            {
                Debug.Log("单击");
                if (StartPressEvent != null) StartPressEvent(Input.mousePosition);

            }

            pressTimer = 0f;
        }

        if (isCounter && Mathf.Abs(Vector3.Distance(startMouseDown, Input.mousePosition)) > dragDistance && isLasting == false)
        {
            Debug.Log("正在拖动");
            isDrag = true;

            if (StartDragEvent != null) StartDragEvent(Input.mousePosition);

            //让人物跟谁手指的方向移动
            return;
        }

        if (isCounter && pressTimer > pressLastingTime && isDrag == false)
        {
            Debug.Log("持久点击");
            isLasting = true;

            if (StartLastingEvent != null) StartLastingEvent(Input.mousePosition);

            //出现技能图标,然后滑动到技能哪里就可以触发技能

            return;
        }

    }

}

 

Unity5 + UGUI制作

完整的demo: http://yunpan.cn/cjHbIaXvzemax  访问密码 7607

时间: 2024-11-08 16:53:53

Unity 白猫操作小实例的相关文章

循序渐进VBA EXCEL数据操作小实例

1 向指定单元格区域内写入数据 Sub example1() Dim arr(1 To 3) arr(1) = Array("A", "B", "C", "D") arr(2) = Array("E", "F", "G", "H") arr(3) = Array("I", "J", "K"

Unity 动画系统 Animation 和 Animator的小实例

本文结合一个很简单的动画demo,分别采用2种方法,来对比Animation和Animator的使用方式: 方法1:单独使用Animation 方法2:Animation结合Animator 动画Demo 两个动画.一个是移动,一个是缩放. 实现方式的对比 一.单独Animation来实现 空场景,找到一张Sprite图片,拖到面板中,右键添加Animation组件.如下: 点中这张pig猪的图片,点击Unity的 Window->Animation->Animation.出现如下: 这个时候

spring+mybatis之声明式事务管理初识(小实例)

前几篇的文章都只是初步学习spring和mybatis框架,所写的实例也都非常简单,所进行的数据访问控制也都很简单,没有加入事务管理.这篇文章将初步接触事务管理. 1.事务管理 理解事务管理之前,先通过一个例子讲一下什么是事务管理:取钱. 比如你去ATM机取1000块钱,大体有两个步骤:首先输入密码金额,银行卡扣掉1000元钱:然后ATM出1000元钱.这两个步骤必须是要么都执行要么都不执行.如果银行卡扣除了1000块但是ATM出钱失败的话,你将会损失1000元:如果银行卡扣钱失败但是ATM却出

Android实战简易教程-第五十八枪(AlarmManager类用法研究小实例)

一.概念及相关方法 android中实现定时任务一般有两种实现方式,一种是使用Java API中提供的Timer类,一种是使用android的Alarm机制.Timer机制有个短板就是不太适用于那些需要长期在后台运行的任务,我们都知道为了让电池更加耐用,会在长时间不操作手机的情况下,CPU进入休眠状态,这是可能导致Timer中的定时任务无法正确运行.所以我们重点来研究一下Alarm机制. AlarmManager,顾名思义,就是"提醒",是Android中常用的一种系统级别的提示服务,

Python操作Mysql实例代码教程在线版(查询手册)_python

实例1.取得MYSQL的版本 在windows环境下安装mysql模块用于python开发 MySQL-python Windows下EXE安装文件下载 复制代码 代码如下: # -*- coding: UTF-8 -*- #安装MYSQL DB for pythonimport MySQLdb as mdb con = None try:    #连接mysql的方法:connect('ip','user','password','dbname')    con = mdb.connect('

Unity中操作手机常用功能

最近在测试一个小Demo,用到很多手机功能.在这里一一贴出来,以供后期参考 备注:在打包发布时,Plugins下一定要导入如下dll文件,否则build后无法连接数据库<I18N,I18N.West,System.Data,Mysql.Data> 1.操作手机震动:  Handheld.Vibrate();  //震动前自己加条件判断 2.Input框 调用系统输入法:每个插件TextBox控件自带此功能,实用时开启即可,自动调用手机输入法. 3.退出应用程序<不完整>:if(In

从一个简单的小实例分析JSP+Servelt与JSP+Struts2框架的区别

最近在学struts2,struts2相比以前的JSP+Servlet,在处理流程上的更简单,我们就一个小实例来具体分析一下. 实例内容如下: 实现一个简单的注册页面包括:用户名.密码.重复密码.年龄.出生日期.毕业日期 要求如下:用户名的长度在4-6之间密码的长度在4-6之间重复密码与密码相等年龄在10-50之间出生日期在毕业日期之前 输入错误返回原页面,并在原页面的文本框后面显示具体的错误信息.正确输入则跳入下个页面将信息显示出来. 1.JSP+Servlet 1)我们编写注册页面regis

Flex入门(二)——Flex+BlazeDs+J2ee小实例

首先来简单介绍一下BlazeDS. BlaseDS的核心功能包括RPC Services(远程过程调用服务) 和Messaging Service(消息服务).BlazeDS是一个基于服务器的Java远程调用(remoting)和web消息传递(messaging)技术,使得后台的Java应用程序可以和运行在浏览器上的Flex应用程序能够互相通信.简单来说一个BlazeDS应用包括客户端(Flex或AIR应用程序)和一个服务端(J2EE程序).BlazeDS在期间起着承上启下的作用,Flex和B

Selenium2学习-010-WebUI自动化实战实例-008-Selenium 操作下拉列表实例-Select

此文主要讲述用 Java 编写 Selenium 自动化测试脚本编写过程中,对下拉列表框 Select 的操作. 下拉列表是 Web UI 自动化测试过程中使用率非常高的,通常有两种形式的下拉列表,一种是 Select 的下拉列表,此种操作的时候比较简单,定位到元素后直接操作即可:还有的下拉列表是以多个 div + js + input 的形式实现,input 用于存储选择的项的 value 值:当然也会有其他方式实现的下拉列表. 希望能对初学 Selenium2 WebUI 自动化测试编程的亲