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