Unity中实现在屏幕滑动获取滑动方向
2017-10-10 15:18
1096 查看
一下代码拷贝过去直接运行就可以使用。。。。。。。。。。。把自己的功能改到Debug处就行
using UnityEngine;
using System.Collections;
public class jarodInputController : MonoBehaviour
{
private float fingerActionSensitivity = Screen.width * 0.05f; //手指动作的敏感度,这里设定为 二十分之一的屏幕宽度.
//
private float fingerBeginX;
private float fingerBeginY;
private float fingerCurrentX;
private float fingerCurrentY;
private float fingerSegmentX;
private float fingerSegmentY;
//
private int fingerTouchState;
//
private int FINGER_STATE_NULL = 0;
private int FINGER_STATE_TOUCH = 1;
private int FINGER_STATE_ADD = 2;
// Use this for initialization
void Start()
{
fingerActionSensitivity = Screen.width * 0.05f;
fingerBeginX = 0;
fingerBeginY = 0;
fingerCurrentX = 0;
fingerCurrentY = 0;
fingerSegmentX = 0;
fingerSegmentY = 0;
fingerTouchState = FINGER_STATE_NULL;
}
// Update is called once per frame
void Update()
{
if (Input.GetKeyDown(KeyCode.Mouse0))
{
if (fingerTouchState == FINGER_STATE_NULL)
{
fingerTouchState = FINGER_STATE_TOUCH;
fingerBeginX = Input.mousePosition.x;
fingerBeginY = Input.mousePosition.y;
}
}
if (fingerTouchState == FINGER_STATE_TOUCH)
{
fingerCurrentX = Input.mousePosition.x;
fingerCurrentY = Input.mousePosition.y;
fingerSegmentX = fingerCurrentX - fingerBeginX;
fingerSegmentY = fingerCurrentY - fingerBeginY;
}
if (fingerTouchState == FINGER_STATE_TOUCH)
{
float fingerDistance = fingerSegmentX * fingerSegmentX + fingerSegmentY * fingerSegmentY;
if (fingerDistance > (fingerActionSensitivity * fingerActionSensitivity))
{
toAddFingerAction();
}
}
if (Input.GetKeyUp(KeyCode.Mouse0))
{
fingerTouchState = FINGER_STATE_NULL;
}
}
private void toAddFingerAction()
{
fingerTouchState = FINGER_STATE_ADD;
if (Mathf.Abs(fingerSegmentX) > Mathf.Abs(fingerSegmentY))
{
fingerSegmentY = 0;
}
else
{
fingerSegmentX = 0;
}
if (fingerSegmentX == 0)
{
if (fingerSegmentY > 0)
{
Debug.Log("up");
}
else
{
Debug.Log("down");
}
}
else if (fingerSegmentY == 0)
{
if (fingerSegmentX > 0)
{
Debug.Log("right");
}
else
{
Debug.Log("left");
}
}
}
}
using UnityEngine;
using System.Collections;
public class jarodInputController : MonoBehaviour
{
private float fingerActionSensitivity = Screen.width * 0.05f; //手指动作的敏感度,这里设定为 二十分之一的屏幕宽度.
//
private float fingerBeginX;
private float fingerBeginY;
private float fingerCurrentX;
private float fingerCurrentY;
private float fingerSegmentX;
private float fingerSegmentY;
//
private int fingerTouchState;
//
private int FINGER_STATE_NULL = 0;
private int FINGER_STATE_TOUCH = 1;
private int FINGER_STATE_ADD = 2;
// Use this for initialization
void Start()
{
fingerActionSensitivity = Screen.width * 0.05f;
fingerBeginX = 0;
fingerBeginY = 0;
fingerCurrentX = 0;
fingerCurrentY = 0;
fingerSegmentX = 0;
fingerSegmentY = 0;
fingerTouchState = FINGER_STATE_NULL;
}
// Update is called once per frame
void Update()
{
if (Input.GetKeyDown(KeyCode.Mouse0))
{
if (fingerTouchState == FINGER_STATE_NULL)
{
fingerTouchState = FINGER_STATE_TOUCH;
fingerBeginX = Input.mousePosition.x;
fingerBeginY = Input.mousePosition.y;
}
}
if (fingerTouchState == FINGER_STATE_TOUCH)
{
fingerCurrentX = Input.mousePosition.x;
fingerCurrentY = Input.mousePosition.y;
fingerSegmentX = fingerCurrentX - fingerBeginX;
fingerSegmentY = fingerCurrentY - fingerBeginY;
}
if (fingerTouchState == FINGER_STATE_TOUCH)
{
float fingerDistance = fingerSegmentX * fingerSegmentX + fingerSegmentY * fingerSegmentY;
if (fingerDistance > (fingerActionSensitivity * fingerActionSensitivity))
{
toAddFingerAction();
}
}
if (Input.GetKeyUp(KeyCode.Mouse0))
{
fingerTouchState = FINGER_STATE_NULL;
}
}
private void toAddFingerAction()
{
fingerTouchState = FINGER_STATE_ADD;
if (Mathf.Abs(fingerSegmentX) > Mathf.Abs(fingerSegmentY))
{
fingerSegmentY = 0;
}
else
{
fingerSegmentX = 0;
}
if (fingerSegmentX == 0)
{
if (fingerSegmentY > 0)
{
Debug.Log("up");
}
else
{
Debug.Log("down");
}
}
else if (fingerSegmentY == 0)
{
if (fingerSegmentX > 0)
{
Debug.Log("right");
}
else
{
Debug.Log("left");
}
}
}
}
相关文章推荐
- Unity中玩家通过点击行走 或 滑动屏幕行走的实现
- unity 安卓端通过滑动屏幕实现对物体的移动以及缩放
- Unity 滑动事件6个方向的实现
- Unity中玩家通过点击行走 或 滑动屏幕行走的实现
- 【Android】ListView监听上下滑动(设置滚动监听判断ListView的滚动方向同时获取屏幕高度、ListView实际高度,判断是否需要展示返回顶部按钮(具体逻辑请看代码--附有详细注释)。
- Unity判断手势触摸的类型 ,判断手势的滑动方向,并获取刚触摸以及触摸结束事的坐标
- 【Unity 3D学习】获取鼠标滑动方向(上下左右)-控制摄像机围绕物体旋转
- Unity判断手势的滑动方向,单点触摸和多点触摸,并获取刚触摸以及触摸结束事的坐标
- Dot Net下实现屏幕图像差异获取v1.0
- Android编程实现屏幕自适应方向尺寸与分辨率的方法
- 使用VelocityTracker获取在屏幕滑动的速度
- iOS 如何在整个屏幕中都能实现滑动返回的效果
- Android——滑动屏幕监听+ Palette获取图片中的颜色+Toolbar-ActionBar
- 使用Windos API实现远程屏幕信息获取
- 实现屏幕切换、滑动-ViewPager详解(三)之--------使用Fragment实现ViewPager滑动
- Android实现动态改变屏幕方向(Landscape & Portrait)
- 滑动屏幕旋转模型功能实现
- 实现屏幕滑动 PagerAdapter
- Unity3d 判断手势触摸的类型 ,判断手势的滑动方向,并获取刚触摸以及触摸结束事的坐标
- Android 2.1实现屏幕不同方向旋转