Cocos Creator Spine动画产生位移时,动画位置获取问题 (root的使用)
版本:2.3.4
參考:
CSDN?Unity-Spine動畫位移問題
CNBolg?使用Spine動畫制作動作游戲
?
網上搜了一下Spine動畫位置的解決方案,參考了兩篇文章吧。在制作spine動作時,不可避免的動畫會產生位置,動畫師不能一直將動畫固定在原地。
比如跑步動畫,這個可以原地踏步,動畫做在原地就行了。
?
但是做出攻擊,或者一些炫酷動作時,難免會產生位移。這個位移可能是曲線的,非線性運動,直接讓程序或者策劃去微調出和動畫師制作的一樣效果有些困難。
例如如下攻擊動畫。人物位置移動了,但是動畫位置還在原地呢。這樣做碰撞檢測或者其他位置相關判斷的時候,還在檢測原地的位置,這顯然是不合適的。
?
?
這個解決方案就是讓動畫師制作動畫時,讓根骨骼root跟隨動畫一起移動。
下圖root根骨骼就是人物腳下那個十字圖標
?
在cocos中獲取root的位置。在做位置相關判斷時,加上root的位置就行了。
start() {let sk:sp.Skeleton = this.hero.getComponent(sp.Skeleton);sk.setAnimation(0,"attack1_1",true);let root = sk.findBone("root");let rootX = root.x;let rootY = root.y;console.log("root位置:",rootX , rootY);console.log("動畫位置:",sk.node.x + rootX, sk.node.y + rootY);}
如果要在人物身上掛載碰撞BoxCollider,選擇骨骼動畫,點擊生成掛點。
?
?
生成掛點,會顯示人物的骨骼樹
?
?
我們在root下掛上一個BoxCollider做碰撞檢測
?
?
在代碼里顯示碰撞檢測debugDraw
onLoad(){var manager = cc.director.getCollisionManager();manager.enabled = true;manager.enabledDebugDraw = true;}?
運行游戲,可以看到碰撞檢測的BoxCollider掛載root上后,是和人物顯示的位置是一致的。
這樣做使用BoxCollider做碰撞檢測,就不用擔心spine動畫里有位移了。
?
總結
以上是生活随笔為你收集整理的Cocos Creator Spine动画产生位移时,动画位置获取问题 (root的使用)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: spyder for python3.6
- 下一篇: KOF97