剛做完一個項目,里面有用到Untiy3D射線的相關內容,里面有個小坑記錄一下,也把我遇到的這個問題和大家分享下。
使用Unity3D的屏幕射線時,會得到兩個值,一個是Origin,是射線的源點,另一個是Direct,代表了射線的方向,這兩個值均為Vector3類型。
根據數學知識,射線的表示為P(t)=Origin+t*Direct,你以為就這么容易嗎,NO!!!!
重點:射線的Direct表示的是以Origin為原點的方向!!!所以P(t)這個等式在這種情況下並不成立。
那怎么獲得射線上的點呢,Unity3D里面有個剛剛好的接口,是Ray.GetPoint(t),這樣得到的點即為射線上的點。
說回來,那怎么得到射線方向呢(世界坐標系下的)=> direct=Ray.GetPoint(t)-Origin
這樣就可以使用P(t)=Origin+t*direct這個公式了。
感覺自己繞了個圈圈,如果有更好的方法,歡迎留言。