Re: [請益] 請問Ball Pit的彈珠是如何實現?
※ 引述《MasterDoggo (狗狗我的朋友)》之銘言:
: 近期剛好有寫projectile的經驗
: 然後玩到Ball Pit看到那麼多彈珠實在很好奇實現方式
: 不知道會是直接用rigidbody省時間
: 還是自己手刻射線檢查?
: 通常情況第一直覺是想到rigidbody
: 但看到滿屏彈珠,總有點懷疑rigidbody的效能是否足夠
: 請問各位經驗豐富的大大,認為是用什麼方式實現的呢?
: https://i.meee.com.tw/OZPqf62.png


沒玩過 Ball X Pit,但單純看畫面的話有點隨便的分析:
https://youtu.be/L_w0AJSYXJo?list=PLlIK6xp5WIRcj312uD1Pf__lTag7cq8uf
以 Unity Rigidbody 來說數量級沒有超過 1000 的話,其實就連 Steam Deck 的 CPU 都
可以輕易跑在 90FPS 以上。從 Ball X Pit 的畫面看起來雖然很花,但是動態的物理性物
件滿少的,挑了幾個後期畫面看起來都遠低於 100 顆子彈,要用 Rigidbody 實作應該是
挺綽綽有餘。
不過實務上 Ball X Pit 的單一子彈體積很小,移動速度不算太慢,為了避免判定穿透應
該是有做 Raycast,加上因為玩家子彈移動速度比其他物件都快很多,如果說子彈本體完
全沒有使用 Collider/Rigidbody 而是全部都靠 Raycast 向前判斷碰撞也不無可能,破綻
應該會挺小。但是體積比較大的特殊子彈只用單一 Raycast 的話玩家可能會對擦彈沒命中
感到不滿,當然也是可以對單一子彈打超過一條 Raycast 處理。
Unity 也有能力使用多執行緒做大量 Raycast 判定:
https://docs.unity3d.com/ScriptReference/RaycastCommand.html
不過如果同一個 Frame 內就要取得結果的話,可能不一定可以省到效能,甚至可能會比直
接打普通的 raycast 慢。
總之:都可以,純 Rigidbody 或純 Raycast 感覺都很可行,這個數量級其實不太有效能
問題。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 219.104.138.229 (日本)
※ 文章網址: https://www.ptt.cc/bbs/GameDesign/M.1770196528.A.FA3.html
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):