鼠标拖动分针转动,时刻跟随,即指针一直在鼠标下,时针按1:12随分针转动。
代码:
/************************************************************
FileName: Watch.cs
Author:末零 Version :1.0 Date: 2018-7-19
Description:表针拖动
************************************************************/
using UnityEngine;
public class Watch: MonoBehaviour {
public float speed;
public Transform pointerM;
public Transform pointerH;
private float angleM;
private Vector3 oldVector_M;
public void DrugEvent()
{
oldVector_M = pointerM.localEulerAngles;
//通过鼠标位置决定角度(因为Vector3.Angle不会大于180)
if (Input.mousePosition.x >= Screen.width / 2)
{
angleM = 360 - Vector3.Angle(new Vector3(0, 1, 0), new Vector3(Input.mousePosition.x - Screen.width / 2, Input.mousePosition.y - Screen.height / 2, 0));
}
else
{
angleM = Vector3.Angle(new Vector3(0, 1, 0), new Vector3(Input.mousePosition.x - Screen.width / 2, Input.mousePosition.y - Screen.height / 2, 0));
}
pointerM.localEulerAngles = new Vector3(0, 0, angleM);
if (Mathf.Abs(pointerM.localEulerAngles.z - oldVector_M.z) < 180)//判断是否经过12
{
pointerH.localEulerAngles += new Vector3(0, 0, (pointerM.localEulerAngles.z - oldVector_M.z) / 12);
}
else
{
if (Input.mousePosition.x > Screen.width / 2)//顺时针经过
{
pointerH.localEulerAngles += new Vector3(0, 0, (pointerM.localEulerAngles.z - oldVector_M.z - 360) / 12);
}
else//逆时针经过
{
pointerH.localEulerAngles += new Vector3(0, 0, (pointerM.localEulerAngles.z - oldVector_M.z + 360) / 12);
}
}
}
}
本文介绍了一个Unity脚本,该脚本允许用户通过鼠标拖动来改变表盘上分针的位置,并使时针根据分针的变化进行相应调整。通过计算鼠标位置与屏幕中心的角度来确定分针的角度,并确保时针正确反映当前的时间比例。
7319

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



