1
編寫一個C#腳本,允許玩家用簡單的塊構造。出於這個原因,我從播放器中向前發射了一個光線。當射線擊中某個物體時 - 我得到collison的世界座標與hit.point 如果我在該座標上實例化一個構造塊 - 它將被創建與其他物體重疊。我必須改變座標。Unity3D Raycasting
我怎樣才能奠定如上面的圖片中的點?這將允許我計算創建的塊的座標
編寫一個C#腳本,允許玩家用簡單的塊構造。出於這個原因,我從播放器中向前發射了一個光線。當射線擊中某個物體時 - 我得到collison的世界座標與hit.point 如果我在該座標上實例化一個構造塊 - 它將被創建與其他物體重疊。我必須改變座標。Unity3D Raycasting
我怎樣才能奠定如上面的圖片中的點?這將允許我計算創建的塊的座標
您可以將RaycastHit的point
屬性沿着相交面的法線移至塊的範圍(寬度的一半;如果是單位立方體,則爲0.5f) ;是這樣的:
if (Input.GetMouseButtonDown (0)) {
Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast (ray, out hit)) {
Instantiate (prefab, hit.point + hit.normal * blockExtent, hit.transform.rotation);
}
}
這將在光線投射的交點實例化新的塊(你需要計算的相交面的中心,如果你想他們精確地對齊),並繼承的旋轉相交的GameObject。
請注意,這不會阻止新塊在現有塊內產卵;它會阻止它在你射出的區塊內產卵。
hit.point + hit.normal我試過這個。它適用於其他立方體,但不適用于飛機或其他大型物體。 – Bob
哦......它的工作原理。我困惑了一下。我已經試過這個了,但是它在 – Bob
之前沒有用過預製的範圍(或其他計算出的偏移量)?公平地說,你的問題特別是關於街區,而不是飛機或其他類型的物體。 – Problematic