Unity实现360度可旋转、缩放单独看模型

一、说明:

实现模型的单独交互,显示在面板上,可以进行旋转和缩放操作。

二、代码演示:

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()