- 触屏软件功能展示对于相机视角的控制使用
using UnityEngine;
using UnityEngine.EventSystems;
public class CameraController : MonoBehaviour
{
public GameObject Target;
public float LastY;
public float Distance = 10f;
public float MinDistance = 5f;
public float MaxDistance = 15f;
public float Sensitivity = 5f;
public float MoveSensitivity = 3;
public float rotationX = 0f;
public float rotationY = 0f;
public Vector3 offset;
public Quaternion targetRotation;
public Vector3 targetPosition;
[Header("鼠标位移")]
public bool IsDragging;
private Vector3 lastPosition;
[Header("点击跟随")]
public bool IsMovingByObj = true;
[Header("手势")]
Vector2 oldPos1;
Vector2 oldPos2;
public float speed = 0.7f;
public float RotaTouchHor = 0.7f;
public BoxCollider moveBox;
public BoxCollider TargetBox;
public bool IsCanRota = true;
private void Start()
{
offset = transform.position - Target.transform.position;
TargetObjPos = Target.transform.position;
}
private void Update()
{
if (Input.touchCount < 2)
{
if (Input.touchCount > 0)
{
Touch touch = Input.GetTouch(0);
if (touch.phase == TouchPhase.Moved)
{
float touchDeltaPositionX = touch.deltaPosition.x;
float touchDeltaPositionY = touch.deltaPosition.y;
rotationX += touchDeltaPositionX * speed;
rotationY -= touchDeltaPositionY * speed;
rotationY = Mathf.Clamp(rotationY, -90f, 89f);
targetRotation = Quaternion.Euler(rotationY, rotationX, 0f);
}
}
if (Input.GetMouseButton(1) && Input.touchCount == 0 && !EventSystem.current.IsPointerOverGameObject())
{
IsDragging = true;
lastPosition = Input.mousePosition