遇到的需求是 方向盘模拟仿真UI,旋转是按住方向盘转动,限制只能左转一圈半和右转一圈半,松手时方向盘自动复位。
先上最终效果图:
下面说一下具体实现过程。首先是要实现方向盘跟着鼠标位置旋转。思路是按下鼠标后每一帧都记录按下的点跟以方向盘0中心为坐标原点的y坐标轴的角度,如下图黄色∠1所示(黑点为鼠标上一帧位置,红点为鼠标当前帧位置)
然后用当前帧角度蓝色∠2跟上一帧角度黄色∠1比较,得出一个差值黑色∠3。用transform.Rotate()方法旋转这个差值即可让方向盘跟着鼠标转动。
第二个需求是让方向盘左右旋转不能超过一圈半,也就是450°。这个需求的实现是自定义一个float字段,用来记录旋转的总角度,用∠1和∠2的差值正负判定当前鼠标是在顺时针转还是逆时针转,判定当前角度对于总角度是加还是减。
这儿说一下unity