EasyTouch物体的旋转缩放
Posted GamePal
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EasyTouch物体的旋转缩放相关的知识,希望对你有一定的参考价值。
public class ArMonoDevelop : MonoBehaviour { // Use this for initialization //需要放大缩小旋转的物体 public GameObject rotateAndEnlargeObj; public bool isRotate = true; public bool isEnlarge = true; void Start() { } void OnEnable() { if (isRotate) { EasyTouch.On_Drag += OnDrag; } if (isEnlarge) { EasyTouch.On_PinchIn += OnPinchIn; EasyTouch.On_PinchOut += OnPinchOut; } EasyTouch.On_SimpleTap += OnSimpleTap; EasyTouch.On_DoubleTap += OnDoubleTap; } void OnDisable() { if (isRotate) { EasyTouch.On_Drag -= OnDrag; } if (isEnlarge) { EasyTouch.On_PinchIn -= OnPinchIn; EasyTouch.On_PinchOut -= OnPinchOut; } EasyTouch.On_SimpleTap -= OnSimpleTap; EasyTouch.On_DoubleTap -= OnDoubleTap; } void OnSimpleTap(Gesture gest) { if (gest.pickedObject != null) { SimpleTap(gest); } else { Vuforia.CameraDevice.Instance.SetFocusMode(Vuforia.CameraDevice.FocusMode.FOCUS_MODE_TRIGGERAUTO); } } protected virtual void SimpleTap(Gesture gest) { } void OnDoubleTap(Gesture gest) { if (gest.pickedObject != null) { DoubleTap(gest); } } protected virtual void DoubleTap(Gesture gest) { } void OnDrag(Gesture gest) { if (gest.pickedObject != null) { if (rotateAndEnlargeObj != null) { Vector3 v = rotateAndEnlargeObj.transform.localRotation.eulerAngles; v.y -= gest.deltaPosition.x * 20 * Time.deltaTime; v.y -= gest.deltaPosition.y * 20 * Time.deltaTime; rotateAndEnlargeObj.transform.localRotation = Quaternion.Euler(v); } } } void OnPinchIn(Gesture gest) { if (gest.pickedObject != null) { if (rotateAndEnlargeObj != null) { Vector3 localScale = rotateAndEnlargeObj.transform.localScale; float num = (0.01f * gest.deltaPinch); rotateAndEnlargeObj.transform.localScale = new Vector3(localScale.x - num, localScale.y - num, localScale.z - num); if (rotateAndEnlargeObj.transform.localScale.x < 1) { rotateAndEnlargeObj.transform.localScale = new Vector3(1, 1, 1); } } } } void OnPinchOut(Gesture gest) { if (gest.pickedObject != null) { if (rotateAndEnlargeObj != null) { Vector3 localScale = rotateAndEnlargeObj.transform.localScale; float num = (0.01f * gest.deltaPinch); rotateAndEnlargeObj.transform.localScale = new Vector3(localScale.x + num, localScale.y + num, localScale.z + num); if (rotateAndEnlargeObj.transform.localScale.x > 2) { rotateAndEnlargeObj.transform.localScale = new Vector3(2, 2, 2); } } } } }
以上是关于EasyTouch物体的旋转缩放的主要内容,如果未能解决你的问题,请参考以下文章
shader编程-二维空间中使用矩阵实现物体的旋转缩放平移变换(WebGL-Shader开发基础03)
shader编程-二维空间中使用矩阵实现物体的旋转缩放平移变换(WebGL-Shader开发基础03)
Unity3D游戏物体操作 ③ ( 旋转操作 | 旋转工具 | 基本旋转 | 设置旋转属性 | 增量旋转 | 缩放操作 | 轴向缩放 | 整体缩放 | 操作工具切换 | 操作模式切换 )