[英]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.