将3D模型放置到某个位置,然后通过鼠标左键进行旋转的操作
一种方法是添加另外的相机,采用RenderTexture来渲染该相机的内容
那么RenderTexture是做什么的呢?
RenderTexture可以捕获从摄像机、光源和其他对象渲染的图像,并将结果保存到纹理中。
在使用RenderTexture时,需要将其分配给一个摄像机或光源,并设置相应的属性,例如分辨率、格式、深度缓冲区、清除颜色、裁剪矩形等
RawImage和Image有什么区别呢?
Image组件使用Mesh和Material来渲染图像,如果需要在UI中显示简单的图像,例如图标或按钮,则可以使用Image组件
RawImage组件则使用Unity的UGUI系统内置的UI Raw Image组件来渲染图像,如果需要在UI中显示高级图像效果,例如视频、动态纹理或WebCam输入,则可以使用RawImage组件
步骤如下:
一、创建新的相机,创建新的RenderTexture,并把RenderTexture赋值给该相机,如下

二、创建新的Canvas,用于显示该图像,并在节点下创建RawImage,把RenderTexture赋值给该RawImage

三、把旋转脚本挂载到该RawImage下,注意里面的target就是你的旋转目标,脚本如下:
- using UnityEngine;
- using UnityEngine.EventSystems;
-
- ///
- /// 引入拖拽接口,实现接口
- ///
- public class RotateModel : MonoBehaviour,IDragHandler,IBeginDragHandler
- {
- public bool rotateEnable = true;
-
- public Transform target;
-
- public Vector2 rotateSpeed;
-
- private Vector2 lastMouse;
-
- ///
- /// 拖拽过程中
- ///
- ///
- public void OnDrag(PointerEventData eventData)
- {
- if (!rotateEnable) return;
-
- Vector2 offset = eventData.position - lastMouse;
-
- if(Mathf.Abs(offset.x) > Mathf.Abs(offset.y))
- {
- target.Rotate(Vector2.down * Time.deltaTime * rotateSpeed.y * offset.x,Space.World);
- }
- else
- {
- target.Rotate(Vector2.right * Time.deltaTime * rotateSpeed.x * offset.y,Space.World);
- }
- lastMouse = eventData.position;
- }
- ///
- /// 开始拖拽
- ///
- ///
- public void OnBeginDrag(PointerEventData eventData)
- {
- if (!rotateEnable) return;
-
- //target = ModelShowControl.instance.GetModel();
-
- lastMouse = eventData.position;
-
- }
- }
运行游戏,即可进行旋转!