美文网首页unity记录
Unity 模型的旋转(四个方向)缩放

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

作者: 席梦飞 | 来源:发表于2018-04-13 10:12 被阅读0次
    一、使用

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

    • 缩放功能:

      1. 在目标模型上添加Lean Touch脚本
      2. 添加Lean Scale脚本,设置双指缩放在Required Finger Count给值2,限制缩放的大小值勾选Scale Clamp并填写 Scale Min 和 Scale Max


        Lean Scale
    • 旋转:
        1. 单个轴的旋转

    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

    相关文章

      网友评论

        本文标题:Unity 模型的旋转(四个方向)缩放

        本文链接:https://www.haomeiwen.com/subject/mfaqkftx.html