一、说明:
实现模型的单独交互,显示在面板上,可以进行旋转和缩放操作。
二、代码演示:
using UnityEngine;
public class ModelShowControl : MonoBehaviour
{
[SerializeField][Header("渲染展示相机")]
private GameObject showCamera;
[SerializeField][Header("展示交互的物品")]
private GameObject showGameObject;
[SerializeField][Header("是否自动旋转")]
private bool isAutoRotate;
[SerializeField][Header("自动旋转方向,例如(0,1,0)按照Y轴旋转")]
private Vector3 autoRotateDirection;
[SerializeField][Header("是否按照自身坐标系轴自动旋转")]
private bool isAutoRotatePivot;
[SerializeField][Header("自动旋转速度")]
private float autoRotationSpeed = 5;
[SerializeField][Header("鼠标旋转速度")]
private float mouseRotateSpeed = 0.5f;
[SerializeField][Header("是否反向旋转X")]
private bool isRotateInvertX;
[SerializeField][Header("是否反向旋转Y")]
private bool isRotateInvertY;
[SerializeField][Header("缩放速度")]
private float zoomSpeed = 0.5f;
[SerializeField][Header("是否反向缩放")]
private bool isZoomInvert;
[SerializeField][Header("最近缩放距离")]
private float minZoomDistance = 1f;
[SerializeField][Header("最远缩放距离")]
private float maxZoomDistance = 10f;
private Vector3 cameraInitPos;
private Vector3 lastMousePosition;
private bool isRotating; //是否正在旋转
private Vector3[] showGameObjectInitTrans = new Vector3[3];
public static ModelShowControl Instance;
private void Awake()