如題,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年7月16日 星期日
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中設定好動畫演出,
就可以讓角色產生攻擊判定了。
參照影片,現在角色的攻擊動作,就有對應的攻擊判定了。
主要流程就是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中設定好動畫演出,
就可以讓角色產生攻擊判定了。
參照影片,現在角色的攻擊動作,就有對應的攻擊判定了。
訂閱:
文章 (Atom)






