private void FaceToDirection(string animationName, EntityAnimationDirection direction, float fps, Action <string> callback) { if (direction.Equals(lastDirection)) { if (callback != null) { callback(animationName); } return; } var currentFrame = DirectionToFrame(lastDirection); var targetFrame = DirectionToFrame(direction); animator.Sprite.FlipX = false; var deltaFrame = targetFrame - currentFrame; if (deltaFrame < 0) { deltaFrame += 16; } if (deltaFrame > 8) { if (reversedStand == null) { var stand = animator.GetClipByName(animationName); reversedStand = new tk2dSpriteAnimationClip(); reversedStand.CopyFrom(stand); System.Array.Reverse(reversedStand.frames); } currentFrame = 15 - currentFrame; targetFrame = 15 - targetFrame; animator.PlayFromFrame(reversedStand, currentFrame); } else { animator.PlayFromFrame(animationName, currentFrame); } SetAnimatorFpsFactor(fps); Assert.Should(animator.CurrentClip.frames.Length >= 16, "invalid frame count ... " + this.gameObject.name); // 设置 updater m_updateRotate = (dt) => { if (animator.CurrentFrame != targetFrame) { return; } animator.Stop(); lastDirection = direction; if (callback != null) { callback(animationName); } m_updateRotate = null; }; }
public override tk2dSpriteAnimationClip OnAnimMenu(string menuEntry, List <tk2dSpriteAnimationClip> allClips, tk2dSpriteAnimationClip selectedClip) { tk2dSpriteAnimationClip newClip = new tk2dSpriteAnimationClip(); newClip.CopyFrom(selectedClip); newClip.name = AnimOperatorUtil.UniqueClipName(allClips, "Copy of " + selectedClip.name); allClips.Add(newClip); operations = AnimEditOperations.NewClipCreated | AnimEditOperations.AllClipsChanged; return(newClip); }
public static tk2dSpriteAnimationClip Reverse(this tk2dSpriteAnimationClip clip) { reverseTable.Clear(); tk2dSpriteAnimationClip reversed = null; if (!reverseTable.TryGetValue(clip, out reversed)) { reversed = new tk2dSpriteAnimationClip(); reversed.CopyFrom(clip); Array.Reverse(reversed.frames); reverseTable.Add(clip, reversed); reverseTable.Add(reversed, clip); } return(reversed); }
void MirrorClips() { if (anim == null) { return; } allClips.Clear(); if (anim.clips != null) { foreach (tk2dSpriteAnimationClip clip in anim.clips) { tk2dSpriteAnimationClip c = new tk2dSpriteAnimationClip(); c.CopyFrom(clip); allClips.Add(c); } } }
public override tk2dSpriteAnimationClip OnAnimMenu(string menuEntry, List<tk2dSpriteAnimationClip> allClips, tk2dSpriteAnimationClip selectedClip) { tk2dSpriteAnimationClip newClip = new tk2dSpriteAnimationClip(); newClip.CopyFrom(selectedClip); newClip.name = AnimOperatorUtil.UniqueClipName( allClips, "Copy of " + selectedClip.name ); allClips.Add(newClip); operations = AnimEditOperations.NewClipCreated | AnimEditOperations.AllClipsChanged; return newClip; }
void MirrorClips() { if (anim == null) return; allClips.Clear(); if (anim.clips != null) { foreach (tk2dSpriteAnimationClip clip in anim.clips) { tk2dSpriteAnimationClip c = new tk2dSpriteAnimationClip(); c.CopyFrom(clip); allClips.Add(c); } } }