using UnityEngine;
using System.Collections;
//手指旋转
public class TurnWithMouse : MonoBehaviour
{
float speed = 20;
/// <summary>
/// 如果初始模型Y轴有旋转,需要把模型旋转值赋值到这里
/// </summary>
float yRoration = 180;
// public bool IsOpen = true;
private Camera uiCamera;
private RaycastHit hitInfo;
private void Start()
{
uiCamera = GameObject.FindWithTag("UICamera").GetComponent<Camera>();
}
void OnEnable()
{
yRoration = 180;
transform.localEulerAngles = Vector3.zero;
}
void Update()
{
// if (!IsOpen)
// return;
if (Application.platform != RuntimePlatform.Android || Application.platform != RuntimePlatform.IPhonePlayer)
{
TurnObj(Input.GetMouseButtonDown(0), Input.GetMouseButton(0));
}
else
{
if (Input.touchCount > 0)
{
Touch t = Input.GetTouch(0);
TurnObj(t.phase == TouchPhase.Began, t.phase == TouchPhase.Moved);
}
}
}
void TurnObj(bool isDown, bool isMove)
{
if (isDown)
{
Ray ray = uiCamera.ScreenPointToRay(Input.mousePosition);
Physics.Raycast(ray, out hitInfo);
}
if (isMove)
{
if (hitInfo.transform != null && hitInfo.collider.isTrigger)
{
//获取鼠标输入
yRoration += Input.GetAxis("Mouse X") * speed;
//计算旋转
Quaternion mRotation = Quaternion.Euler(transform.rotation.x, -yRoration, 0);
// 插值旋转
transform.rotation = Quaternion.Lerp(transform.rotation, mRotation, Time.deltaTime * speed);
}
}
}
}