一、摄像机结构
二、安卓端已验证,可以使用;调整旋转的速度和阻尼值的时候需谨慎,否则会出现反转现象(完整包下载链接)
三、代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
/// <summary>
/// 控制摄像机旋转移动
/// </summary>
public class CameraControl_Move : MonoBehaviour
{
[HideInInspector]
public Transform target = null;
private Transform verticalPivot = null; //垂直旋转
private Transform horizontalPivot = null; //水平旋转
private Camera mCamera = null;
private float horizontalAngle = 0; //水平旋转的角度Y
private float verticalAngle = 0; //垂直旋转的角度X
private float rotateSpeed = 5f; //视角旋转的速度
private float rotateDamp = 5f; //旋转的阻尼感
private Quaternion horizontalRot = Quaternion.identity; //水平旋转的角度
private Quaternion verticalRot = Quaternion.identity; //垂直旋转的角度
private float moveSpeed = 1; //视角移动速度
private float moveDamp = 10; //移动的阻尼感
private float minDistance = 5; //距离模型最小距离
private float maxDistance = 300; //距离模型最大距离
private float currentDistance = 0; //距离模型的距离
private float scaleSpeed = 100; //视角缩放速度
private float scaleDamp = 10; //缩放的阻尼感
#region 手机端参数
private float preFingerDistance = 0; //两个手指按下的时候之间的初始距离
private float preFingerDistance_Move = 0;
#endregion
private bool isLocking = true; //延迟解锁
private string currentRoom = "OutScene";
public struct ValueConfig
{
public string roomName {
get; set; }
public float minDistance {
get; set; }
public float maxDistance {
get; set; }
public float distance {
get; set; }
public float moveSpeed {
get; set; }
public float scaleSpeed {
get; set; }
public float rotX {
get; set; }
public float rotY {
get; set; }
}
private List<ValueConfig> valueConfigList = new List<ValueConfig>() {
new ValueConfig {
roomName =