滑动让物体旋转



不知道大家以前实现鼠标旋转和拖动物体是怎么写的, 
当时我们不知道如何写, 
在网上查找了下。 
终于知道了。 
现在我就根据鼠标拖动物体的方法写个鼠标拖动物体实现旋转的功能。 
就和鼠标拖 
动移动物体差不多了,直接附上代码吧,很简单的 
using UnityEngine;  
using System.Collections; 


  public class BaseRotate  :  MonoBehaviour  { 

 public Vector3  mousePos;  

 IEnumerator  OnMouseDown()  { 
         mousePos  =  Input.mousePosition; 
 while (Input.GetMouseButton( 0 )) 
 {  
Vector3  offset  =  mousePos  -  Input.mousePosition;  
transform.Rotate(Vector3.up  *  offset.x,  Space.World);    

transform.Rotate(Vector3.right*offset.y,Space.World);  

mousePos=Input.mousePosition;   

yield return null ;  


 }  

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用Unity的Input类来实现手势控制。下面是一个简单的示例代码: ```csharp using UnityEngine; public class ObjectController : MonoBehaviour { private float rotateSpeed = 0.5f; private float moveSpeed = 0.1f; private float scaleSpeed = 0.1f; private Vector2 prevTouchPos; private Vector2 touchDelta; void Update() { if (Input.touchCount == 1) { // 单指滑动控制物体旋转 if (Input.GetTouch(0).phase == TouchPhase.Moved) { float rotateX = Input.GetTouch(0).deltaPosition.x * rotateSpeed; float rotateY = Input.GetTouch(0).deltaPosition.y * rotateSpeed; transform.Rotate(Vector3.up, -rotateX, Space.World); transform.Rotate(Vector3.right, rotateY, Space.World); } } else if (Input.touchCount == 2) { // 双指滑动控制物体左右上下移动 if (Input.GetTouch(0).phase == TouchPhase.Moved && Input.GetTouch(1).phase == TouchPhase.Moved) { touchDelta = Input.GetTouch(0).position - Input.GetTouch(1).position; float moveX = touchDelta.x * moveSpeed; float moveY = touchDelta.y * moveSpeed; transform.Translate(-moveX, -moveY, 0, Space.World); } // 双指分开缩小控制物体放大缩小 float pinchAmount = 0; Quaternion desiredRotation = transform.rotation; if (Input.GetTouch(1).phase == TouchPhase.Began) { prevTouchPos = Input.GetTouch(1).position - Input.GetTouch(0).position; } else if (Input.GetTouch(0).phase == TouchPhase.Moved && Input.GetTouch(1).phase == TouchPhase.Moved) { var curTouchPos = Input.GetTouch(1).position - Input.GetTouch(0).position; pinchAmount = curTouchPos.magnitude - prevTouchPos.magnitude; desiredRotation *= Quaternion.Euler(Vector3.back * pinchAmount * scaleSpeed); prevTouchPos = curTouchPos; } transform.rotation = desiredRotation; transform.localScale += new Vector3(pinchAmount, pinchAmount, pinchAmount); } } } ``` 在这个示例中,我们使用了两个变量 `rotateSpeed` 和 `moveSpeed` 来控制旋转移动的速度,使用变量 `scaleSpeed` 来控制缩放的速度。`prevTouchPos` 变量用于存储双指滑动的起始位置,`touchDelta` 变量用于存储双指滑动的距离差。在代码中,我们使用 `transform` 属性来控制物体旋转移动和缩放。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值