在端游上大家应该多数都使用过的EasyTouch插件,在EasyTouch 5.0.17 最新版本扩展方法中我有过简单的介绍,今天说一下另一款触摸插件,它非常适合做展示类大屏幕的多点触控TouchScript,在Unity上的AssetStore也是五星好评,而且还是免费资源,也可以在GitHub上下载对应的TouchScript。
下面我们开始介绍TouchScript提供的每一个Example
第一个示例场景Camera
Camera.gif
这个例子演示了如何使用
- ScreenTransformGesture
- Pointer limits
- FullscreenLayer
相互作用
- 用一根手指拖动相机
- 用2个手指拖动旋转相机
- 捏缩放
- 用2个手指旋转绕Z轴旋转
在这个场景中主要含有 主要逻辑和3个TouchScript组件
1. FullscreenLayer ---在这个图层中,你可以看到所有的 pointers 而不需要对场景进行任何raycast投射然后将目标设置为它所连接的GameObject,在这个例子中, FullscreenLayer 通常放在层次结构的底部以捕获所有剩余的pointer,但在本例中,它是唯一的层,因为我们对“Touching”任何对象不感兴趣。
我对他的理解为这个FullscreenLayer 只是接受TouchScript射线的一个层级,一般会把这个层级放在最底层,类似于背景,如果有其他层级在它前面会挡住摄像,然后对应的层级处理响应的事件,这个场景中只有这个层级,所以其他物理无法接受事件所以不会有操作
2. ScreenTransformGesture 将Transform Type设置为“Translation”并将Limit Pointers限制为1.此手势仅识别单指针平移移动。
3. 另一个ScreenTransformGesture,它具有Transform Type 设置为Translation、Rotation、Scaling和Limit Pointers to> = 2。 该手势可识别所有双指针变换。
4. CameraController脚本订阅ScreenTransformGestures并控制相机移动,如下所示:
/*
* @author Valentin Simonov / http://va.lent.in/
*/
using UnityEngine;
using TouchScript.Gestures.TransformGestures;
namespace TouchScript.Examples.CameraControl
{
/// <exclude />
public class CameraController : MonoBehaviour
{
public ScreenTransformGesture TwoFingerMoveGesture;
public ScreenTransformGesture ManipulationGesture;
/// <summary>
/// 移动速度
/// </summary>
public float PanSpeed = 200f;
/// <summary>
/// 旋转速度
/// </summary>
public float RotationSpeed = 200f;
/// <summary>
/// 缩放速度
/// </summary>
public float ZoomSpeed = 10f;
private Transform pivot;
private Transform cam;
private void Awake()
{
pivot = transform.Find("Pivot");
cam = transform.Find("Pivot/Camera");
}
private void OnEnable()
{
TwoFingerMoveGesture.Transformed += twoFingerTransformHandler;
ManipulationGesture.Transformed += manipulationTransformedHandler;
}
private void OnDisable()
{
TwoFingerMoveGesture.Transformed -= twoFingerTransformHandler;
ManipulationGesture.Transformed -= manipulationTransformedHandler;
}
/// <summary>
/// 单指事件
/// </summary>
/// <param name="sender"></para