代码语言:javascript复制
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ModelMouseCtrl : MonoBehaviour {
public Transform m_curShowObj;
private Transform m_hitTrans;
bool m_isLeftPress = false;
bool m_isRightPress = false;
public float m_xAngles = 0.0f;
public float m_yAngles = 0.0f;
private float m_xSpeed = 10.0f;
private float m_ySpeed = 10.0f;
// Update is called once per frame
void Update () {
if (Input.GetMouseButtonDown(0))
{
m_isLeftPress = true;
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit = new RaycastHit();//存储碰撞信息
if (Physics.Raycast(ray,out hit))
{
m_hitTrans = hit.transform;
}
}
if (Input.GetMouseButtonUp(0))
{
m_isLeftPress = false;
m_hitTrans = null;
}
if (Input.GetMouseButton(1))
{
m_isRightPress = true;
m_xAngles -= Input.GetAxis("Mouse X") * m_xSpeed ;
m_yAngles = Input.GetAxis("Mouse Y") * m_ySpeed ;
}
if (Input.GetMouseButtonUp(1))
{
m_isRightPress = false;
}
}
private void LateUpdate()
{
if (m_isLeftPress == true && m_hitTrans != null)
{
Vector3 screenPos = Camera.main.WorldToScreenPoint(m_hitTrans.position);
Vector3 mousePos = Input.mousePosition;
mousePos.z = screenPos.z;
Vector3 worldPos = Camera.main.ScreenToWorldPoint(mousePos);
m_hitTrans.position = worldPos;
}
if (m_isRightPress == true)
{
m_curShowObj.transform.localRotation = Quaternion.Euler(m_yAngles, 0, 0);
m_curShowObj.transform.GetChild(0).localRotation = Quaternion.Euler(0, m_xAngles, 0) ;
}
}
}
模型跟随鼠标左键运动,右键旋转,模型旋转