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
Unity 白猫操作小实例的更多相关文章
- 循序渐进VBA EXCEL数据操作小实例
1 向指定单元格区域内写入数据 Sub example1() ) arr() = Array("A", "B", "C", "D& ...
- Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作
Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作 1>. 创建一个控制台程序2>. 添加一个 ADO.NET实体数据模型,选择对应的数据库与表(Studen ...
- C#开发中使用Npoi操作excel实例代码
C#开发中使用Npoi操作excel实例代码 出处:西西整理 作者:西西 日期:2012/11/16 9:35:50 [大 中 小] 评论: 0 | 我要发表看法 Npoi 是什么? 1.整个Exce ...
- canva实践小实例 —— 马赛克效果
前面给大家带来了操作像素的API,此时此刻,我觉得应该配以小实例来进行进一步的说明和演示,以便给大家带来更宽广的视野和灵感,你们看了我的那么多的文章,应该是懂我的风格,废话不多说,进入正题: 这次给大 ...
- canvas实践小实例一 —— 画板工具
前面讲了一部分的canvasAPI的基础知识,光看API的介绍确实是很无趣乏味,需要一点可以激发内心的激情的东西来激励自己来学习,于是就了伴随canvasAPI学习的小实例,这样通过API的知识,结合 ...
- Selenium2学习-010-WebUI自动化实战实例-008-Selenium 操作下拉列表实例-Select
此文主要讲述用 Java 编写 Selenium 自动化测试脚本编写过程中,对下拉列表框 Select 的操作. 下拉列表是 Web UI 自动化测试过程中使用率非常高的,通常有两种形式的下拉列表,一 ...
- 一个简单的Android小实例
原文:一个简单的Android小实例 一.配置环境 1.下载intellij idea15 2.安装Android SDK,通过Android SDK管理器安装或卸载Android平台 3.安装J ...
- WCF小实例以及三种宿主
WCF小实例以及三种宿主 最近一直在学习WCF相关知识,下面将通过一个小实例对所学的知识进行简单的回顾:本实例是一个简单三层操作数据库,并且也简单实现的三种宿主(控制台宿主,IIS宿主以及Window ...
- Spring初识(通过小实例清晰认识Spring)
1.spring架构: spring是J2EE应用程序框架,是轻量级的IoC和AOP的容器框架,主要是针对javaBean的生命周期进行管理的轻量级容器,可以单独使用,也可以和Struts框架,iba ...
随机推荐
- 前端开发利器—FIDDLER 转
http://www.cnblogs.com/yuzhongwusan/archive/2012/07/20/2601306.html 前端开发利器—FIDDLER 1.Fiddler相对其他调试工具 ...
- leetcode:Minimum Path Sum(路线上元素和的最小值)【面试算法题】
题目: Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right w ...
- hdu-1573 Robot Motion
Robot Motion Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 10219 Accepted: 4977 Des ...
- io系统
一.浅谈io系统 io系统的结构化思想是:输入-转换流-装饰器-输出. 对于字节流来说,常见的结构类为: package com.handchina.yunmart.middleware.servic ...
- android避免service被杀
1.在service中重写下面的方法,这个方法有三个返回值, START_STICKY是service被kill掉后自动重写创建@Override public int onStartComma ...
- SQL函数简述
数字函数ABS 取绝对值 POWER 乘方 LN 10为底数取幂SQRT 平方根 EXP e的n次乘方 LOG(m,n) m为底数n取幂数学运算函数:ACOS ATAN ATAN2 COS COSH ...
- sql 表名为关键字
user在sql server中时一个关键字,如上面说所的,有时候我们无意中将其作为表的名称,当我们在sql语句中要使用该名称时例如:select *from user这是会提示user附近有语法错误 ...
- gitolite随记
1.git clone源码 git clone git://github.com/sitaramc/gitolite 2.安装 gitolite/install -ln 3.建立git仓库 gitol ...
- C# 操作 Excel
1.NOIP (功能齐全,评价较高) http://www.codeproject.com/Tips/813187/Csharp-Read-and-write-Excel-xls-and-xlsx-f ...
- Ibatis 后台打印完整的sql语句
http://blog.csdn.net/deng11342/article/details/9122015 http://www.blogjava.net/libin2722/archive/200 ...