Unity3D 拖动物体旋转和缩放

原创 2013年12月18日 14:00:01
using UnityEngine;
using System.Collections;

public class ThisRotate : MonoBehaviour
{
    Vector3 StartPosition;
    Vector3 previousPosition;
    Vector3 offset;
    Vector3 finalOffset;
    Vector3 eulerAngle;

    bool isSlide;
    float angle;

    public float scale = 1;

    RaycastHit hit;

    void Start()
    {

    }

    void OnGUI()
    {
        
        Ray ray =Camera.mainCamera.ScreenPointToRay(Input.mousePosition);
        if(Physics.Raycast(ray, out hit))
        {
            if (hit.transform == transform)
            {
                if (Input.GetAxis("Mouse ScrollWheel") != 0)
                {
                    Debug.Log(Input.GetAxis("Mouse ScrollWheel"));
                    scale = scale + Input.GetAxis("Mouse ScrollWheel");
                    transform.localScale = new Vector3(1 + scale, 1 + scale, 1 + scale);
                }
            }
        }
    }

    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            StartPosition = Input.mousePosition;
            previousPosition = Input.mousePosition;
        }
        if (Input.GetMouseButton(0))
        {
            offset = Input.mousePosition - previousPosition;
            previousPosition = Input.mousePosition;
            transform.Rotate(Vector3.Cross(offset, Vector3.forward).normalized, offset.magnitude, Space.World);

        }
        if (Input.GetMouseButtonUp(0))
        {
            finalOffset = Input.mousePosition - StartPosition;
            isSlide = true;
            angle = finalOffset.magnitude;


        }
        if (isSlide)
        {
            transform.Rotate(Vector3.Cross(finalOffset, Vector3.forward).normalized, angle * 2 * Time.deltaTime, Space.World);
            if (angle > 0)
            {
                angle -= 5;
            }
            else
            {
                angle = 0;
            }
        }
    }
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

【Unity】手势缩放屏幕和旋转视角

using UnityEngine; using System.Collections; public class Move : MonoBehaviour { // 主角 public Tr...

[Unity3D]Unity3D游戏开发之鼠标滚轮实现放大缩小

今天为大家分享的是在Rpg游戏中十分常见的鼠标滚轮调整摄像机视野效果,首先我们先创建一个游戏场景:         接下来我们编写一段脚本代码: using UnityEngine; using ...

iTween基础之Scale(缩放大小)

一、基础介绍;二、基础属性

unity 3d中简单巧妙的实现拖动鼠标旋转物体

using UnityEngine; using System.Collections; public class BaseRotate : MonoBehaviour { public ...

Unity移动端手势操作——缩放3D物体

自己写的一套用于Unity移动端手势操作的判断,主要有单指移动3D物体、单指旋转3D物体、双指缩放3D物体,这里首先分开介绍双指su3D物体,如下所示:...

unity3D 鼠标滚轮实现物体的大小缩放

这个实现的方法不难,难的可能是要弄懂鼠标滚轮响应函数的机制,响应函数是Input.GetAxis("Mouse ScrollWheel"),其中,这个函数是有返回值的,类型是float,向前滚是返回正...

Unity3D 手指放大缩小,手指移动指定物体

怕自己忘掉,简单记录一下 using UnityEngine; using System.Collections; using UnityEngine.UI; public class B...
  • jintuo
  • jintuo
  • 2016年01月29日 14:43
  • 4102

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Unity中用触摸控制物体旋转和放大

void Update () { //单点触摸 if( 1 == Input.touchCount ){ Touch touch = Input.GetTouch (0); V...
  • konga
  • konga
  • 2015年05月31日 15:47
  • 14083

Unity 手势左右上下滑 放大缩小

#if UNITY_ANDROID && !UNITY_EDITOR #define ANDROID #endif     #if UNITY_IPHONE && !UNITY_EDITOR...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Unity3D 拖动物体旋转和缩放
举报原因:
原因补充:

(最多只允许输入30个字)