在使用Unity进行VR开发中遇到鼠标拖动开关窗户的功能需求,我想到三种解决方案:
一:窗户模型必须经过建模软件的处理,使其坐标轴Y轴在窗子边沿;使用欧拉角改变鼠标拖动中的窗户旋转角度(eulerAngles),并使用Mathf.Clamp()限制其旋转角度;
二:为模型录制关键帧动画Animation,在鼠标拖动过程中改变其播放顺序和速度;
三:使用Unity提供的物理组件:HingeJoint(铰链关节)。
下面演示第三种方案(使用铰链关节)如何实现开关窗户效果:
我们勾选HingeJoint组件的UseLimits选项,并限制最大窗户开合角度为90度。
代码如下:
我使用了UGUI提供的事件接口(对于非UI的3D物体同样适用),目的是简化代码量,因为事件接口中为我们提供了现成的鼠标拖动增量值delta,可以很好的根据鼠标拖动速度改变窗子的开合快慢。
运行效果如下:
Pai大星微信——2463954659.