实现思路:
旋转转盘的z轴,开始以角加速度加速到角速度最大值,结束的时候,以角加速度减速使角速度减少到0,然后转盘z轴旋转的角度就是加上每秒以角速度数值大小,为了使角度不能一直增大,对360度取余再赋值给角度。
注:转盘和箭头可以从windows的画图拉一个圆和几条线做一下,然后用Windows的照片编辑一下 ,使用背景中的删除,就可以把转盘扣出来了,也可以使用我放在下边的
实现代码:
public class SpinnerControl : MonoBehaviour
{
public RectTransform imgSpine;
public float speedMax = 1200;
public float angularAcceleration = 200;
float angle = 0;
float angularVelocity = 0;
bool isStart = false;
int[] core = new int[] { 100, 200, 300, 400, 500, 600, 700, 800 };
void Update()
{
if (Input.GetMouseButtonDown(0))
{
isStart = true;
}
if (Input.GetMouseButtonDown(1))
{
isStart = false;
}
if (isStart)
{
angularVelocity = Mathf.Min(speedMax, angularVelocity + angularAcceleration * Time.deltaTime);
angle += angularVelocity * Time.deltaTime;
angle %= 360;
imgSpine.rotation = Quaternion.Euler(0, 0, angle);
}else if(!isStart && angularVelocity > 0)
{
angularVelocity = Mathf.Max(0, angularVelocity - angularAcceleration * Time.deltaTime);
angle += angularVelocity * Time.deltaTime;
angle %= 360;
imgSpine.rotation = Quaternion.Euler(0, 0, angle);
if(angularVelocity <= 0f)
{
Debug.Log(core[Mathf.FloorToInt(angle / 45f)]);
}
}
}
}
实现效果: