現在我正在 Unity 引擎中進行行星生成專案。當我想在地球表面放置植物時,我遇到的問題就發生了。
我的方法是從行星的中心向表面投射光線以獲得植物的位置(因為表面不是普通球體,所以我不知道確切的位置)。但我沒有受到任何打擊。
所以我嘗試了幾種方法來解決這個問題。我發現的東西對我來說很奇怪。當我使用“新光線”創建光線時,我什么也得不到。但是使用“UnityEngine.Camera.main.ScreenPointToRay”我得到了一些預期的命中率。所以這不是關于游戲物件層的問題。
對我來說,使用“new Ray”似乎有問題。
這里有人解釋一下嗎?
public void CreatePlants(List<PlantDefinition> plantSpeciesDefinitions)
{
foreach (PlantDefinition plantDefinition in plantSpeciesDefinitions)
{
directions = new Vector3[plantDefinition.maximumCount];
for (int i = 0; i < plantDefinition.maximumCount; i )
{
Vector3 direction = new Vector3(Random.Range(-1f, 1f), Random.Range(-1f, 1f), Random.Range(-1f, 1f));
direction.Normalize();
directions[i] = direction;
Ray ray = new Ray(planetCenter, directions[i]); // does not give any hits
Ray ray2 = UnityEngine.Camera.main.ScreenPointToRay(Input.mousePosition); // does give hits
Physics.Raycast(ray2, out RaycastHit hit);
if(hit.collider != null)
Debug.LogWarning($"Object hit: {hit.collider.gameObject.name}");
}
}
}
uj5u.com熱心網友回復:
默認情況下,Unity 中的光線投射不會擊中碰撞器的“內部”/背面。
您在球體內部開始射線,并希望從內部撞擊表面。
您必須
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/401755.html
上一篇:可能有多個引數的動作引數
下一篇:VisualStudio2022winform設計器在任何控制元件的屬性視窗中不顯示ApplicationSettings
