Unity DragonBone animace maskování a míchání

Unity Dragonbone Animation Masking



DragonBones se v projektu používá k provádění 2D animace kostí. Sdílejte poznámky o maskování a míchání animací.

Požadavky: Na scéně je kůň. Na hřbetě koně je samuraj s červeným střapcem. Kůň musí být v provozním stavu. Lidé na koni mohou hrát animace útoku a obrany. Z důvodu ochrany autorských práv použiji jako ukázku oficiálního malého bílého muže z Egret.



1. Kreslený klip (běžící postava)




obraz

2. Animační klip (ruční tanec)




obraz

3. Implementujte následující animaci (smíšená animace)


obraz

O maskování a míchání animací:

  • Animační maska



    Maska animace má zobrazit pouze část animace. Následující kód je ovládání kosti horní části těla, aby se přehrála animace dřepu, a ostatní kosti zůstanou v původních pozicích.

_handAnimationState=_armatureComponent.animation. GotoAndPlayByTime('Squat',0.1f,0) _handAnimationState.AddBoneMask('upperbody')
  • Směs animací

    Míchání animací znamená, že jedna kostra může přehrávat více animací současně. Například následující kód umožňuje postavě tančit za běhu.

//Play hand animation _handAnimationState=_armatureComponent.animation. GotoAndPlayByTime('Squat',0.1f,0) _handAnimationState.layer=1 _handAnimationState.AddBoneMask('upperbody') //Play running animation _legsAnimationState=_armatureComponent.animation.FadeIn('Run',0.1f,0) _legsAnimationState.layer=0

V DragonBones má skeletová animace koncept skupiny za běhu. Můžeme nechat animaci hrát ve skupině. Když je ve stejné skupině nastaveno přehrávání jiné animace, animace, která se aktuálně přehrává, se zastaví, takže Aby bylo možné přehrávat animace současně, je třeba umístit animace, které se mají hrát v různých skupinách na stejný čas. V tomto příkladu je spuštěná animace umístěna do skupiny dolní části těla a taneční animace je umístěna do skupiny horní části těla. Tančící ruce a nohy.

Celý kód je následující:

using System.Collections using System.Collections.Generic using UnityEngine using DragonBones public class BlendAndMask : MonoBehaviour { public UnityArmatureComponent _armatureComponent //Hand animation state private DragonBones.AnimationState _handAnimationState //Leg animation state private DragonBones.AnimationState _legsAnimationState // Use this for initialization void Start () { //Play hand animation _handAnimationState=_armatureComponent.animation. GotoAndPlayByTime('Squat',0.1f,0) _handAnimationState.layer=1 _handAnimationState.AddBoneMask('upperbody') //Play running animation _legsAnimationState=_armatureComponent.animation. FadeIn('Run',0.1f,0) _legsAnimationState.layer=0 } }

Viz 'Oficiální dokumenty DragonBones'

Chcete-li získat další obsah, věnujte pozornost:


obraz