118 lines
3.1 KiB
C#
118 lines
3.1 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
|
|
using System.Text;
|
|
using UnityEngine;
|
|
|
|
namespace Thousandto.Code.Logic
|
|
{
|
|
/// <summary>
|
|
/// 滑屏操作的处理器
|
|
/// </summary>
|
|
public class SlashHandler
|
|
{
|
|
#region//常量定义
|
|
//滑屏的最远距离
|
|
public const float CN_SLASH_DIS_MAX = 30.0f;
|
|
#endregion
|
|
|
|
#region//私有变量
|
|
//开始滑屏的位置
|
|
private Vector2 _startSlashPos = Vector2.zero;
|
|
//结束滑屏的位置
|
|
private Vector2 _endSlashPos = Vector2.zero;
|
|
//记录滑屏的帧数
|
|
private int _slashFrameCounter = 0;
|
|
//滑屏的最小距离
|
|
private float _slashMinimumDis = Screen.height * 0.15f;
|
|
//滑屏的最小速度
|
|
private float _slashMinimumSpeed = Screen.height;
|
|
//滑屏开始的时间
|
|
private float _startSlashTime = 0.0f;
|
|
//结束滑屏的时间
|
|
private float _endSlashTime = 0.0f;
|
|
//是否能够激活滑屏操作
|
|
private bool _enableSlash = false;
|
|
#endregion
|
|
|
|
#region//属性信息
|
|
//当前是否能够滑屏
|
|
public bool EnableSlash
|
|
{
|
|
get { return _enableSlash; }
|
|
set { _enableSlash = value; }
|
|
}
|
|
#endregion
|
|
|
|
#region//公共方法接口
|
|
public void Refresh()
|
|
{
|
|
_enableSlash = false;
|
|
}
|
|
|
|
public void Reset()
|
|
{
|
|
|
|
}
|
|
|
|
//滑屏开始
|
|
public void SlashBegin(Vector2 startPos)
|
|
{
|
|
_enableSlash = true;
|
|
OnSlash_InitData(startPos);
|
|
}
|
|
//滑屏移动
|
|
public void SlashMove(Vector2 fingerPos, Vector2 delta)
|
|
{
|
|
OnSlash_UpdateData(fingerPos);
|
|
}
|
|
|
|
//滑屏结束
|
|
public void SlashEnd(Vector2 fingerPos)
|
|
{
|
|
OnSlash_UpdateData(fingerPos);
|
|
OnSlash_ResetData();
|
|
}
|
|
#endregion
|
|
|
|
#region //私有方法
|
|
// 开始滑屏时的初始化处理
|
|
private void OnSlash_InitData(Vector2 startPos)
|
|
{
|
|
// start slash
|
|
_startSlashTime = Time.time;
|
|
_startSlashPos = startPos;
|
|
_endSlashPos = _startSlashPos;
|
|
_slashFrameCounter++;
|
|
}
|
|
//滑屏过程当中的处理
|
|
private void OnSlash_UpdateData(Vector2 endPos)
|
|
{
|
|
_endSlashTime = Time.time;
|
|
_endSlashPos = endPos;
|
|
_slashFrameCounter++;
|
|
if (_enableSlash)
|
|
{
|
|
Vector2 slashDir = _endSlashPos - _startSlashPos;
|
|
float slashDis = slashDir.magnitude;
|
|
if (slashDis > CN_SLASH_DIS_MAX)
|
|
{
|
|
OnSlash_ResetData();
|
|
}
|
|
}
|
|
}
|
|
|
|
//恢复数据
|
|
private void OnSlash_ResetData()
|
|
{
|
|
// reset all vars
|
|
_slashFrameCounter = 0;
|
|
_startSlashPos = Vector2.zero;
|
|
_endSlashPos = Vector2.zero;
|
|
_startSlashTime = 0.0f;
|
|
_endSlashTime = 0.0f;
|
|
}
|
|
#endregion
|
|
}
|
|
}
|