if (Input.GetMouseButtonDown(0))
{
if (Tower != null)
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit, 1000, LayerMask.GetMask("TowerBase")))
{
Instantiate(Tower, hit.transform.position, Quaternion.identity);
}
}
else
{
return;
}
uj5u.com熱心網友回復:
http://blog.csdn.net/weixin_37658157/article/details/76164101不太清楚你到底是怎么實作不了,塔防那個游戲我也做過,不過你可以看下我的博客,里面有關于射線檢測的注意點
uj5u.com熱心網友回復:
你輸出下碰撞體(hit)的tag是什么 或者 name很可能在碰撞你想要的目標之前 就已經和別的物體發生碰撞了
uj5u.com熱心網友回復:
LayerMask.GetMask("TowerBase")這個應該是:
LayerMask.NameToLayer("TowerBase")
吧?
uj5u.com熱心網友回復:
我上面說的不對,但是我沒有權限編輯和洗掉這個帖子,抱歉。uj5u.com熱心網友回復:
Instantiate(Tower, hit.transform.position, Quaternion.identity);hit.transform.position應該是hit.point
第一個是你點擊的物體的軸心點位置,后面的是才是你點擊的位置,你原來的代碼是吧塔創建到了點擊物體的軸心點了,沒有創建在滑鼠點擊的位置,可能你攝像機里面剛好看不到,但是層次面板里面應該能看到多出來一個塔物件。
uj5u.com熱心網友回復:
用一個Debug.Log()測驗是否進入了實體化陳述句里面,點擊后是否出現實體化預制體Tower,若出現了代表代碼本身沒問題,再看看樓上的發言。轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/56350.html
標籤:Unity3D
上一篇:Unity更新到2017后參考庫報錯,(the type xxx is defined in an assembly that ......)
