在PC或者手机端旋转、移动、缩放模型
2017-08-24 14:57
183 查看
将需要缩放的模型添加碰撞体,我这里以cube代替。
新建一个脚本,命名为test.cs
添加如下代码
将这个脚本放在摄像机上即可。
新建一个脚本,命名为test.cs
添加如下代码
/// /// 当前点击到的物体 /// private GameObject curObj = null; private Vector3 oldPos = Vector2.zero; private Touch oldTouch1; private Touch oldTouch2; private void Update() { if (Input.GetMouseButtonDown(0)) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hitInfo; if (Physics.Raycast(ray, out hitInfo)) { if (hitInfo.transform.CompareTag("furniture")) { curObj = hitInfo.collider.gameObject; oldPos = Input.mousePosition; } } } if (Input.GetMouseButtonUp(0)) { curObj = null; } if (curObj != null) { CheckTouchRotate(); CheckTouchAdjustHeight(); CheckTouchAdjustScal(); } } /// /// 触摸控制旋转 /// void CheckTouchRotate() { #if UNITY_EDITOR float dis = Input.mousePosition.x - oldPos.x; if (Mathf.Abs(dis) > 5.0f) { curObj.transform.Rotate(0, -Input.GetAxis("Mouse X") * 500 * Time.deltaTime,0,Space.Self); } //oldPos = Input.mousePosition; #elif UNITY_ANDROID || UNITY_IOS if (Input.touchCount < 0) { return; } if (Input.touchCount == 1) { if (Input.touches[0].phase == TouchPhase.Began) oldPos = Input.touches[0].position; if (Input.touches[0].phase == TouchPhase.Moved) { Vector2 deltaPos = Input.touches[0].deltaPosition; float dis = Input.touches[0].position.x - oldPos.x; if (Mathf.Abs(dis) > 5) { curObj.transform.Rotate(0, -deltaPos.x * 100 * Time.deltaTime, 0, Space.Self); } } } #endif } /// /// 触摸调整高度 /// void CheckTouchAdjustHeight() { #if UNITY_EDITOR float dis = Input.mousePosition.y - oldPos.y; if (Mathf.Abs(dis) > 5.0f) { curObj.transform.Translate(0, Input.GetAxis("Mouse Y") * 30 * Time.deltaTime, 0); } oldPos = Input.mousePosition; #elif UNITY_ANDROID || UNITY_IOS if (Input.touchCount < 0) { return; } if (Input.touchCount == 1) { if (Input.touches[0].phase == TouchPhase.Began) oldPos = Input.touches[0].position; if (Input.touches[0].phase == TouchPhase.Moved) { Vector2 deltaPos = Input.touches[0].deltaPosition; float dis = Input.touches[0].position.y - oldPos.y; if (Mathf.Abs(dis) > 5) { curObj.transform.Translate(0, deltaPos.y * 30 * Time.deltaTime, 0); } } } #endif } /// /// 触摸调整缩放 /// void CheckTouchAdjustScal() { #if UNITY_EDITOR float scalFactor = Input.GetAxis("Mouse ScrollWheel"); curObj.transform.localScale += new Vector3(scalFactor, scalFactor, scalFactor); #elif UNITY_ANDROID || UNITY_IOS if (Input.touchCount <= 0) { return; } if (Input.touchCount == 2) { Touch newTouch1 = Input.GetTouch(0); Touch newTouch2 = Input.GetTouch(1); if (newTouch2.phase == TouchPhase.Began) { oldTouch1 = newTouch1; oldTouch2 = newTouch2; return; } float oldDis = Vector2.Distance(oldTouch1.position, oldTouch2.position); float newDis = Vector2.Distance(newTouch1.position, newTouch2.position); float offsetDis = newDis - oldDis; float scalFactor = offsetDis / 10.0f; curObj.transform.localScale += new Vector3(scalFactor, scalFactor, scalFactor); oldTouch1 = newTouch1; oldTouch2 = newTouch2; } #endif }
将这个脚本放在摄像机上即可。
相关文章推荐
- OSG学习:移动/缩放/旋转模型
- osg模型的移动,旋转和缩放
- 3、对模型的移动,缩放,以及旋转
- Unity通过射线碰撞选择模型,然后控制模型的移动、旋转、缩放等动作
- OSG学习:移动/缩放/旋转模型
- Unity3d修炼之路:对一个简单对象Cube的移动 旋转和缩放
- Unity3d 简单实现物体旋转缩放移动
- 动画效果:位置移动、画面旋转、渐变透明度、渐变尺寸缩放
- 8.Unity + Android 模型移动和旋转
- [PC或者移动时代]做内容优化的三个基本套路
- Android之matrix类控制图片的旋转、缩放、移动
- 在Unity中通过触摸屏幕实现模型的旋转和缩放
- 抗锯齿:在画图时,由于旋转或者缩放后,会产生锯齿,可以通过这样解决。
- 12 WebGL移动、旋转和缩放中的平移
- 【笔记】《WebGL编程指南》学习-第3章绘制和变换三角形(3-移动旋转缩放))
- VS2010-MFC:用OpenGL在对话框中的PictureControl(图片控件)中绘制三维模型,可旋转、平移、缩放,可用于三维模型的预览
- unity 手指移动物体旋转两个手指控制物体大小缩放
- Android图片查看器(图片可移动、缩放、旋转)
- CSS3属性transform详解之(旋转:rotate,缩放:scale,倾斜:skew,移动:translate)
- 关于手势问题的一些问题,图片旋转或者放大缩小,,需要指定锚点进行旋转或者缩放