Unity3D实现物体旋转缩放移动效果

  

本文实例为大家分享了Unity3D实现物体旋转缩放移动的具体代码,供大家参考,具体内容如下

  

由于项目运行在安卓上,运用到了插件,比较麻烦。你们可以在触发条件上进行修改,不用插件也可以。

  

1。下载FingerGestures插件下载地址,点击打开链接

  

2。导入插件,创建场景将预设手指动作初始化拖拽到层次视图中

  

3。添加脚本,拖拽到摄像机上。创建一个方块拖拽到脚本目标属性上。

        使用UnityEngine;   使用System.Collections;      公开课ObjectControl: MonoBehaviour   {   公共变换目标;   公共浮动yawSensitivity f=80.0;   公共浮动pitchSensitivity f=160.0;   公共bool clampPitchAngle=true;   公共浮动pinchZoomSensitivity=0.5 f;//缩放速度   公共浮动smoothZoomSpeed f=10.0;   公共浮动smoothOrbitSpeed f=20.0;   公共浮动距离=0;      浮动偏航=0;   浮动距=0;   浮动idealYaw=0;   浮动idealPitch=0;   浮动fChangeScale=0;   浮动fChangeideal=0;   公共变换[]movementP;///& lt; summary>///控制模式枚举///& lt;/summary>   公共enum ControlModel   {   缩放、旋转、翻译   }      公共ControlModel ControlModel=ControlModel.Rotate;//Vector3位置=new Vector3 ();   公共bool bArrive=false;//鼠标是否到达零件箱边界区域//平移方式是否根据鼠标拖动距离还是直接置为鼠标位置   公共bool ifDragMove=false;//平移方式为:根据鼠标拖动距离时,评议的速度   公开上市的移动速度=1.0度;//是够需要画出按钮(缩放,旋转,平移)   公共bool ifDrawBtn=true;//缩放方式改为:改变相机范围   公共bool zoomCamera=false;//zoomCamera=true,相机的最小范围值   公共浮动minZoom=0 f;//zoomCamera=true,相机的最大范围值   公共浮动maxZoom=179 f;//平移对象   公共变换moveTarget;//平移对象的初始位置   Vector3 moveTargetPos;//模型的直接父对象   公共变换parentModel;   Vector3 parentModelPos;      无效的Start ()   {   zoomCamera=true;   }      空白OnEnable ()   {      FingerGestures。OnDragMove +=FingerGestures_OnDragMove;   FingerGestures。OnPinchMove +=FingerGestures_OnPinchMove;   FingerGestures。OnFingerDragEnd +=OnFingerDragEnd;      }      空白OnDisable ()   {   FingerGestures。OnDragMove -=FingerGestures_OnDragMove;   FingerGestures。OnPinchMove -=FingerGestures_OnPinchMove;   FingerGestures。OnFingerDragEnd -=OnFingerDragEnd;   }      公共空间setRotation ()   {   Vector3角=target.eulerAngles;   偏航=idealYaw=angles.y;   距=idealPitch=angles.x;   }      空白FingerGestures_OnDragMove (Vector2 fingerPos Vector2δ)   {   onDrag=true;   试一试   {   屏幕上。showCursor=false;   }   抓   {   屏幕上。showCursor=false;   }   如果(controlModel==controlModel。旋转,,! bArrive)   {   idealYaw -=δ。x * yawSensitivity * 0.02 f;   idealPitch +=δ。y * pitchSensitivity * 0.02 f;   len=三角洲;   如果target.transform(目标)。旋转(新Vector3(δ。y -它。x, 0), Space.World);   }   如果(controlModel==controlModel。翻译,,! bArrive)   {   如果(ifDragMove)   {   如果(moveTarget==null)   {   目标。=new Vector3 (target.position位置。x +δ。x *移动速度,target.position。y +δ。y *移动速度,target.localPosition.z);//GetWorldPos (fingerPos);   }   其他的   {   moveTarget。=new Vector3 (moveTarget.position位置。x +δ。x *移动速度,moveTarget.position。y +δ。y *移动速度,moveTarget.localPosition.z);   }   }   其他的   {   如果(moveTarget==null)   {   目标。位置=GetWorldPos (fingerPos);   }   其他的   {   moveTarget。位置=GetWorldPos (fingerPos);   }   }   }      }      空白FingerGestures_OnPinchMove (Vector2 fingerPos1, Vector2 fingerPos2,浮动δ)   {      如果(controlModel==controlModel。放大,,! bArrive)   {   如果(zoomCamera)   {   浮动fZoom=相机。fieldOfView -δ* pinchZoomSensitivity * 800 * Time.deltaTime;   fZoom=Mathf。Min (fZoom maxZoom);   fZoom=Mathf。马克斯(fZoom minZoom);   相机。fieldOfView=Mathf.Lerp(相机。fieldOfView、fZoom Time.deltaTime * smoothZoomSpeed);//camera.transform。位置=目标。位置- fZoom * camera.transform.forward;   }   其他的   {      fChangeScale=target.localScale。x +δ* pinchZoomSensitivity;      Vector3 vc=new Vector3 (fChangeScale, fChangeScale fChangeScale);   }   }   }//滑动结束   空白OnFingerDragEnd (int fingerIndex Vector2 fingerPos)   {   屏幕上。showCursor=true;      onDrag=false;   }//把团结屏幕坐标换算成3 d坐标   Vector3 GetWorldPos (Vector2 screenPos)   {//相机mainCamera=Camera.main;   相机mainCamera=GameObject.FindGameObjectWithTag (“mainCamera”) .GetComponent

Unity3D实现物体旋转缩放移动效果