視覺輔助
厚度VS寬度:here如何確定厚度與寬度? (使用光線投射)
請查看GIF短。
這裏的厚度不同於寬度,因爲有多個壁,因爲有外部和內部圓柱體。厚度是圓柱體任何一側的外壁/內壁之間的距離的測量值,其中厚度是從一端到另一端的距離,其中包括兩者之間的中空空間。
上的GIF快速概要提供
-On每次點擊原點(藍色)和目的地點被創建(橙色)球體來表示,其中用戶點擊和用於計算距離的解釋結束點(顯示在GUI上)。
原點定義了用戶在對象對象的表面上單擊的位置,並且目標定義了與原點的世界Y軸垂直的點,其中第二條射線朝向第一條射線投射,擊中另一邊對撞機。
電流:
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit))
{
//obtain the vector where the ray hit the collider.
hitPoint = hit.point; //origin point
//offset the ray, keeping it along the XZ plane of the hit
Vector3 offsetDirection = -1 * hit.normal;
//offset a long way, minimum thickness of the object
ray.origin = hit.point + offsetDirection * 100;
//point the ray back at the first hit point
ray.direction = (hit.point - ray.origin).normalized;
//raycast all, because there might be other objects in the way
RaycastHit[] hits = Physics.RaycastAll(ray);
foreach (RaycastHit h in hits)
{
if (h.collider == hit.collider)
{
hitBack = h.point; //destination point
}
}
}
目前,寬度是到位的功能。我想計算厚度而不必進入物體內部(如在gif中看到的那樣)。
驚人蔘考
http://answers.unity3d.com/questions/386698/detecting-how-many-times-a-raycast-collides-with-a.html
這傢伙基本上有同樣的問題我和有一個解決方案能夠工作。我不確定Linecasting如何與Raycasting相互作用。
讓我們[在聊天中繼續討論](http://chat.stackoverflow.com/rooms/151438/discussion-between-ryemoss-and-jtth)。 – ryeMoss