unity记录

Unity 模型的旋转(四个方向)缩放

2018-04-13  本文已影响0人  席梦飞
一、使用

缩放效果和手势识别通过 Lean Touch插件实现(插件在商店中免费下载)

using UnityEngine;
using System.Collections;
using Lean.Touch;

public class LeanTouchRotateX : MonoBehaviour {

    Vector3 previousPosition;
    Vector3 offset;

    void Update() {

        // 通过LeanTouch插件,来判断目前触碰屏幕的手指数量
        if (LeanTouch.Fingers.Count == 1) {

            // LeanTouch可以将鼠标点击和屏幕触碰进行转换
            if (Input.GetMouseButtonDown (0)) {

                previousPosition = Input.mousePosition;

            }

            if (Input.GetMouseButton (0)) {

                offset = Input.mousePosition - previousPosition;
                previousPosition = Input.mousePosition;

                    if (offset.x > 0) {
                        transform.Rotate (Vector3.down, offset.magnitude/5, Space.World);
                    }

                    if (offset.x < 0) {
                        transform.Rotate (Vector3.up, offset.magnitude/5, Space.World);
                    }

            }

        }

    }
}

offset.magnitude/5 : 旋转角度大小, Space.World旋转的轴是世界轴,可根据使用需要修改

  2. 两个轴的旋转

using UnityEngine;
using System.Collections;
using Lean.Touch;

public class LeanTouchRotate : MonoBehaviour {

    Vector3 previousPosition;
    Vector3 offset;

    void Update() {

        // 通过LeanTouch插件,来判断目前触碰屏幕的手指数量
        if (LeanTouch.Fingers.Count == 1) {

            // LeanTouch可以将鼠标点击和屏幕触碰进行转换
            if (Input.GetMouseButtonDown (0)) {

                previousPosition = Input.mousePosition;

            }

            if (Input.GetMouseButton (0)) {

                offset = Input.mousePosition - previousPosition;
                previousPosition = Input.mousePosition;
                float xdis = Mathf.Abs (offset.x);
                float ydis = Mathf.Abs (offset.y);
                if (xdis > ydis) {
                    if (offset.x > 0) {
                        transform.Rotate (Vector3.down, offset.magnitude/5, Space.World);
                    }

                    if (offset.x < 0) {
                        transform.Rotate (Vector3.up, offset.magnitude/5, Space.World);
                    }
                } else {
                    if (offset.y > 0) {
                        transform.Rotate (Vector3.right, offset.magnitude/5, Space.World);
                    }

                    if (offset.y < 0) {
                        transform.Rotate (Vector3.left, offset.magnitude/5, Space.World);
                    }
                }
            }

        }

    }
}


二、效果演示:
leantouchshow.gif
上一篇下一篇

猜你喜欢

热点阅读