我正在做一個Voxel遊戲,我的引擎正在使用Physics.raycasts和Mesh碰撞器來獲取您點擊的塊的座標,直到現在。我決定刪除網格對撞機,因爲在某些情況下它只是吃了太多的性能,我在幾秒鐘內將fps下拉到0.1fps(例如,你應該能夠在Y層上滾動),我只需要它用於光線投射。我不使用任何其他物理相關的東西。如果沒有網狀碰撞器,幀率穩定在60到100 fps,但是現在我發現很難找到另一種獲取關於我點擊哪個塊的信息的方法。沒有使用碰撞器的Raycast
有什麼建議嗎?
到目前爲止,我用這段代碼:
public Vector3? GetBlockCursor(){
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if(Physics.Raycast(ray, out hit)) {
hit.point += (hit.normal * -0.5f);
hit.point = new Vector3(Mathf.RoundToInt(hit.point.x), Mathf.RoundToInt(hit.point.y),
Mathf.RoundToInt(hit.point.z));
return hit.point;
}
else return null;
}
https://www.youtube.com/watch?v=qdwUkYrHosk這個人統一了我的世界。他表示,他用箱式對撞機表現出色。雖然我不知道箱子碰撞器是否適合您的需求,因爲體素引擎並不一定意味着完美的方塊。 – Michael 2015-02-24 21:24:28
謝謝,我現在要檢查視頻!我只是在發佈後立即轉向Box Colliders,這是一個顯着的性能提升! – 2015-02-24 22:39:56
不幸的是,它的速度有點快,我不是創建一個Minecraft遊戲,而是擁有一個Gnomoria或Towns引擎... – 2015-02-24 22:56:34