[HTC Vive + Unity開發]——VRTK的研究——用手柄旋轉物體(使用VRTK_Knob腳本)

使用VRTK包中的VRTK_Knob腳本~

該腳本的作用是:

Attaching the script to a game object willallow the user to interact with it as if it were a radial knob. The directioncan be freely set.

也就是說把該腳本掛在一個物體上,就可以用手柄旋轉這個物體,旋轉的方向可自定。


Direction:設置繞哪個軸旋轉

Min和Max:是轉一圈的範圍

Step Size:每次轉的步數


在場景中新建一個cube並添加碰撞盒,然後掛上該腳本,設置Direction等參數,運行後就可以用手柄轉這個物體了。

 

—————————————————————————————————————————

 

然後我將這個腳本掛到了自己的模型的一個小零件上,是一個圓臺形狀的物體,運行時發現旋轉的很詭異,好像是繞着一個別的地方旋轉的,而不是模型中心。

 

於是分析一下VRTK_Knob

這個腳本在運行時爲圓臺物體添加了如下組件:


按照我的理解,大致意思是爲圓臺添加了一個物理屬性ConfigurableJoint(可配置關節),然後Grab圓臺,由於物理屬性的限制,圓臺會繞着一個軸運動。

 

這個軸不是物體的座標中心,而是Configurable Joint中的Anchor。


參照unity聖典的解釋:


Anchor:關節中心點,所有的物理模擬都使用此點作爲中心進行計算。

運行時發現Anchor的Y的數值爲6.737404,問題就在這裏。

 

運行時打開since試圖,查看圓臺物體,發現在圓臺物體的底下有一個小小的座標軸,一開始我都沒看見= =


換個角度看:


在運行中把Anchor的Y設置成0,如下


這時小軸和座標軸就重合到了一起,旋轉也就正常了。


 

比較省事的解決方法是改一下圓臺物體的座標軸,讓它繞着Y旋轉就可以了,或者自己加一個ConfigurableJoint組件而不是讓腳本去加。


關於旋轉圈數等的限制可以在ConfigurableJoint中設置。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章