額,我不是指普通的物理碰撞,
我知道普通的物理碰撞是根據坐標加體積進行判斷的到的是否碰撞,
但是有一個問題呀,
比如:
發射一發子彈
同一個場景內幾百個物體,
難道每一幀都要對子彈物體與其他物體進行判斷么?
而且還可能不止一發子彈,可以是很多發,
我感覺一個執行緒跑肯定會出問題,
求原理,
uj5u.com熱心網友回復:
理論上是這樣的,但是unity內部不會是那么簡單的回圈做碰撞檢測。比如內部會把多個物體映射到桶內,只在同一個桶內的物體才能夠發生碰撞等。uj5u.com熱心網友回復:
OnColliderEnter方法不是專門做碰撞檢測的嗎,判斷你想檢測的物件的tag值然后進行操作uj5u.com熱心網友回復:
可是,還是沒有完全解釋完全...@#1:似乎有點明白了,怎么才能算一個桶內?是按坐標分化的么?有些物體是在高速運動的,從一個桶到另一個桶也是需要消耗性能的啊,還是不太懂,請指導。
@#2:不是怎么做,而是突然想弄的unity3d的原理,也算是漲漲見識了。
@#3:目前還沒學到服務器這一塊...但是原理似乎是這樣的。
uj5u.com熱心網友回復:
這個很簡單。。。將子彈跟場景劃分為兩個。。。就可以了
uj5u.com熱心網友回復:
這應該涉及到空間劃分演算法,比如八叉樹之類的。uj5u.com熱心網友回復:
問題解決方案:追溯碰撞函式原碼看看,把原碼透徹看懂,你能實作你的問題。你問我,我不會,我是小白
uj5u.com熱心網友回復:
這個問題比較深。uj5u.com熱心網友回復:
場景中的靜態物體在引擎中以二叉樹的形式存盤 檢測的時候 先進行射線對二叉樹的 aabb碰撞體檢測 用來剔除大部分的無關資料 最后來確定具體碰撞到了 哪個mesh 檢測出mesh之后 再進行 射線到具體面的碰撞 動態物體一般都是八叉樹存盤 檢測速度會慢一點 但添加與洗掉物體速度會比較快uj5u.com熱心網友回復:
游戲判斷是否被打中應該是服務器那邊去判斷吧,有客戶端頻繁的去物理檢測,游戲性能不會太高啊uj5u.com熱心網友回復:
問題比較深,Unity內部已經處理完了,只要處理邏輯判斷即可轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/54767.html
標籤:Unity3D
下一篇:關于狀態機的問題
