1. 程式人生 > >Unity + Spine 碰撞檢測

Unity + Spine 碰撞檢測

靈活 進行 目前 創建 頂點 發的 要去 del box

通過自己在開發的遊戲過程中發現有幾種做碰撞檢測的方法:
1. 只在unity中添加collider
這是最簡單的一種。在Spine中編輯好骨骼動畫以後導入到unity中,讓後spawn bone就可以得到在Spine中的骨架,然後在需要的骨骼上加上collider。這種方法對於簡單的碰撞應用還可以,但是復雜一點就不好用了,比如在某一幀需要去掉碰撞,這就做不到。而且在編輯collider的時候對於復雜多變的bone也很不好勾勒碰撞區。

2.在Spine中添加專用的碰撞骨骼
在Spine中可以專門多創建一些額外的骨骼(attach上一張純色矩形圖片作為碰撞區域)用來作為碰撞檢測用,這樣就可以在K動畫的時候在每一幀縮放這些骨科老調整碰撞局域,如果將骨骼縮放為0那麽那一幀實際上就沒有碰撞局域了。
當然這種方法也有缺點,這樣的碰撞區域雖然會隨著骨骼縮放,但是只能用矩形的collider,這樣勢必沒有那麽精確。
註意:在做骨骼的時候,要註意骨骼的起點要落在純色圖片的中心,這樣在unity中添加collider的時候,collider位置才會正確,否則會有偏移。
3.使用Spine中的bounding box
這是目前我找到的最好的碰撞解決方案。在Spine中可以給貼圖添加上bounding box,這個box其實是一個多邊形,可以在K動畫的時候影藏,也可以隨著貼圖的骨骼縮放,甚至還可以像mesh一樣對他的頂點進行拖拽來調整邊框,這種方法非常靈活,精確,在導入到unity後可以通過bouding box來自動生成polygon collider。

Unity + Spine 碰撞檢測