private GameObject center;
private float rotateSpeed = 40f;
private float rotateZ = 0;
private float minR = -15f;
private float maxR = 15f;
private float sensitity = 50f;
void Start()
{
//获取物体
center = GameObject.Find("center");
}
//鼠标拖动事件写在Update()中
if (Input.GetMouseButton(0))
{
float rotateY = center.transform.localEulerAngles.y - Time.deltaTime * sensitity*Input.GetAxis("Mouse X");
if (rotateY>=0&&rotateY<=180)
{
rotateZ += Time.deltaTime * sensitity * Input.GetAxis("Mouse Y");
}
else
{
rotateZ -= Time.deltaTime * sensitity * Input.GetAxis("Mouse Y");
}
//控制上下移动的范围(限制)
rotateZ = Mathf.Clamp(rotateZ, minR, maxR);
center.transform.eulerAngles = new Vector3(0, rotateY, rotateZ);
}
本文介绍了一种使用Unity实现鼠标拖动控制物体绕特定轴旋转的方法。通过获取鼠标输入,结合物体当前旋转角度,实现平滑且有约束的旋转效果。代码中详细展示了如何在Update()函数中响应鼠标事件,并通过限制旋转范围确保物体不会超出预设的角度界限。
411

被折叠的 条评论
为什么被折叠?



