簡體   English   中英

Unity3D Raycasting

[英]Unity3D Raycasting

編寫允許玩家使用簡單塊構建的C#腳本。 出於這個原因,我從playercam向前投射光線。 當光線撞擊某個物體時 - 我得到了與hit.point的collison世界坐標。如果我在該坐標上實例化一個構造塊 - 它將與其他對象重疊。 我必須改變坐標。

在此輸入圖像描述

我怎樣才能得到如上圖所示的點? 這將允許我計算創建的塊的坐標

您可以使用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的旋轉。

請注意,這不會阻止新塊在現有塊內生成; 它只會阻止它在你發射光線的區域內產生。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM