顯示具有 Spine 標籤的文章。 顯示所有文章
顯示具有 Spine 標籤的文章。 顯示所有文章

2017年7月16日 星期日

[Spine]使用Spine處理不同角度時該直接該直接換圖還是換骨架?

如題,Spine雖然可以用mesh變形等方式做出轉面的效果,
但是轉面角度過大,例如正面轉成背面時,還是只能換一張圖。
所以此時有兩個方案可以選擇:

方案1. 同一個骨架上準備不同面向的圖

以上圖為例,角色從正面45度轉到背面45度,
至少頭部,軀幹與臀部就得準備正面45度與背面45度的圖,
然後在動作過程中換圖。
動作速度快的話,換圖的破綻就不容易被發現。

雖然說這樣代表轉面時
但角色動作量大的話,
一個骨架每個插槽會有許多圖,
某種程度來說會增加編輯動作的複雜性。

下面連結中有討論到換圖的範例:

http://zh.esotericsoftware.com/forum/DISTURBING-THE-VERSE-zero-gravity-fighter-7774


方案2. 不同骨架對應不同面向


上圖分別為正面與側面的骨架,
假如在同一個動作中只有正面或只有側面的話,
便分別交由不同骨架去處理,編輯起來複雜度就比較低。

但是換骨架會多一些其他的時間成本得花:

1. 每個角色需要多架一副以上的骨架(廢話)

2. 為了讓兩個骨架作用在同一個角色上,可能得請程式人員想辦法

3. 不同的骨架沒有辦法混合動作

那要怎麼選擇什麼時候該怎麼做?

以下純粹是個人的想法,自己也正在摸索中。

狀況允許的話,花點時間分析一下單一角色預期要作到的所有動作有哪些。

例如看2D格鬥遊戲的設定集,
都會看到輕拳重腳必殺技等要做哪些不同的動作,
藉此就可以先分類規劃動作,用來決定自己該如何綁骨架。

假如角色轉向的狀況少,一個面向就可以處理大部分的狀況,
那剩下一點點的轉向動作就用換圖處理掉。

假如角色動作量大,且每個面向動作都很多,就可以考慮分不同面向的骨架。

假如動作量很少,那也不需要另外架骨架,換圖做掉就好。

假如希望美術人員想自行處理轉面的問題,減少溝通的成本,就考慮用換圖的方式;
反之若是美術人員與程式有足夠時間可以溝通,可以考慮另外架骨架。
.
換圖跟換骨架也可以並行,分骨架後,個別需要連貫的轉面動作另外用換圖處理。

上面列出一些不同狀況,其實我想說的事就是case by case,
重要的是知道自己想做什麼,握有有哪些資源,來找出最適合自己最省工的方式來處理吧。

2017年6月18日 星期日

[Spine][Unity][筆記]使用Spine製作2D遊戲攻擊判定

如題,最近剛好試到這個功能,作個簡略的筆記,操作的細節就不多提了。

主要流程就是Spine提供功能,可以圈選出一個區域,
匯入Unity後,便可透過某些方式自動產生一個會跟著bone的polygon collider。

Step 1. 在Spine中設定bounding box


如上圖,在想要綁定bounding box的bone上新增一個socket,
在socket中新增bounding box。

Step 2. 在Spine動畫模式中控制bounding box產生跟消失的時機


攻擊判定只有在攻擊瞬間才為出現,
所以需在動畫模式決定bounding box產生跟消失的時機

Step 3. 輸出Spine資料匯入Unity

略

Step 4. 在Unity 用spine骨架資料產生game object A,並建立一個子game object B附加於A

略,另外做一個game object的原因後面會提

Step 5. 在B上新增Bounding Box Follower,並且選定對應的骨架資料與socket















如圖,把上圖SpineAnimationSide1當作A,BB_Side1_FrontFoot當作B,
在B中新增Bounding Box Follower Component,
便可選擇要指定骨架跟Socket,
可以看到上圖的下拉式選單中,沒bounding box的socket都反白沒得選。

上述動作還會自動幫增加rigidbody 2D還有polygon collider 2D兩個component,

若是在A上增加Bounding Box Follower Component,會有提示訊息要使用者另外新增在B上,
就我自己理解,在我們製作攻擊判定的case中,
可能不會希望攻擊判定的碰撞效果,佔用A的rigidbody,
影響到原來角色A的各種行為(例如移動),
所以會變成另外產生一個B,讓碰撞判定有自己的設定。

Step 6. 在B上新增Bone Follower,並選擇對應的bone


只做Step5碰撞體還不會跟著動,要讓它跟著骨頭才行。
所以需要新增bone follower並選定對應的bone。

上述事情做完後,再寫腳本於OnTriggerEnter2D中設定好動畫演出,
就可以讓角色產生攻擊判定了。





參照影片,現在角色的攻擊動作,就有對應的攻擊判定了。