在使用Unity進行VR開發中遇到鼠標拖動開關窗戶的功能需求,我想到三種解決方案:
一:窗戶模型必須經過建模軟件的處理,使其座標軸Y軸在窗子邊沿;使用歐拉角改變鼠標拖動中的窗戶旋轉角度(eulerAngles),並使用Mathf.Clamp()限制其旋轉角度;
二:爲模型錄制關鍵幀動畫Animation,在鼠標拖動過程中改變其播放順序和速度;
三:使用Unity提供的物理組件:HingeJoint(鉸鏈關節)。
下面演示第三種方案(使用鉸鏈關節)如何實現開關窗戶效果:
我們勾選HingeJoint組件的UseLimits選項,並限制最大窗戶開合角度爲90度。
代碼如下:
我使用了UGUI提供的事件接口(對於非UI的3D物體同樣適用),目的是簡化代碼量,因爲事件接口中爲我們提供了現成的鼠標拖動增量值delta,可以很好的根據鼠標拖動速度改變窗子的開合快慢。
運行效果如下:
Pai大星微信——2463954659.