IEnumerator makeAttack() { var anims = new List <KeyValuePair <AnimationClip, AnimationClip> >(); AnimatorOverrideController aoc = new AnimatorOverrideController(animator.runtimeAnimatorController); while (true) { yield return(new WaitForSeconds(3)); anims.Add(new KeyValuePair <AnimationClip, AnimationClip>(moveAnim, attackAnim)); aoc.ApplyOverrides(anims); animator.runtimeAnimatorController = aoc; GameObject cenBullet = Instantiate(bulletPrefab, transform.position, Quaternion.identity) as GameObject; GameObject upBullet = Instantiate(bulletPrefab, transform.position, Quaternion.identity) as GameObject; GameObject downBullet = Instantiate(bulletPrefab, transform.position, Quaternion.identity) as GameObject; anims.Clear(); AudioSource.PlayClipAtPoint(attackAudio, Camera.main.transform.position); yield return(new WaitForSeconds(0.5f)); anims.Add(new KeyValuePair <AnimationClip, AnimationClip>(moveAnim, moveAnim)); aoc.ApplyOverrides(anims); animator.runtimeAnimatorController = aoc; anims.Clear(); } }
private void SetWeaponAnimations(AnimationClip cur_str, AnimationClip cur_up, AnimationClip cur_down, AnimationClip weap_str, AnimationClip weap_up, AnimationClip weap_down) { List <KeyValuePair <AnimationClip, AnimationClip> > overrides = new List <KeyValuePair <AnimationClip, AnimationClip> >(); KeyValuePair <AnimationClip, AnimationClip> animStr = new KeyValuePair <AnimationClip, AnimationClip>(cur_str, weap_str); KeyValuePair <AnimationClip, AnimationClip> animUp = new KeyValuePair <AnimationClip, AnimationClip>(cur_up, weap_up); KeyValuePair <AnimationClip, AnimationClip> animDown = new KeyValuePair <AnimationClip, AnimationClip>(cur_down, weap_down); overrides.Add(animStr); overrides.Add(animUp); overrides.Add(animDown); animatorOverride.ApplyOverrides(overrides); }
private void AnimationParameterRefresh() { // weapon code for attack animations if (weapon.equipedItem.type != WeaponItem.Type.None) { animator.SetInteger(HASH_WEAPON, weapon.equipedItem.animationCode); } else if (secondHand.equipedItem.type != SecondItem.Type.None) { animator.SetInteger(HASH_WEAPON, secondHand.equipedItem.animationCode); } else { animator.SetInteger(HASH_WEAPON, 0); } // shield for run, and idle animator.SetBool(HASH_SHIELD, shield.equipedItem.type != ShieldItem.Type.None); // compute load float f = body.equipedItem.load + weapon.equipedItem.load + secondHand.equipedItem.load + shield.equipedItem.load + head.equipedItem.load; loadFactor = loadCurve.Evaluate(0.1f * f); animator.SetFloat(HASH_LOADFACTOR, loadFactor); // load clips AnimationClip[] clips = Arsenal.Instance.GetAnimationClip(ref weapon.equipedItem, ref secondHand.equipedItem, ref shield.equipedItem, ref body.equipedItem, ref head.equipedItem, ref backpack.equipedItem); clipOverrides["idle"] = clips[0]; clipOverrides["walk"] = clips[1]; clipOverrides["run"] = clips[2]; clipOverrides["attack"] = clips[3]; animatorOverrideController.ApplyOverrides(clipOverrides); }
/// Plays the specified clip public void Play(AnimationClip anim, float speed = 1, float time = 0, bool force = false) { if (anim == null) return; if (m_animator.enabled == false) m_animator.enabled = true; m_speed = Mathf.Max(0, speed); m_animator.speed = m_speed; if (force == false && IsPlaying(anim)) return; // Reset animation nodes so any curves are if (m_nodes != null) m_nodes.Reset(); #if UNITY_5_6_OR_NEWER m_clipPairList[0] = new KeyValuePair<AnimationClip, AnimationClip>(m_clipPairList[0].Key, anim); m_controller.ApplyOverrides(m_clipPairList); #else m_clipPairArray[0].overrideClip = anim; m_controller.clips = m_clipPairArray; #endif m_animator.Update(0.0f); // Update so that new clip state is reset before hitting play m_animator.Play(STATE_NAME, 0, time); // m_speed = Mathf.Max(0,speed); // m_animator.speed = m_speed; m_currAnim = anim; m_animator.Update(0.0f); // Update so that normalized time is updated immediately }
public static void Switch(Animator anim, string endsWith) { var oc = new AnimatorOverrideController(anim.runtimeAnimatorController); anim.runtimeAnimatorController = oc; var overrides = new List <KeyValuePair <AnimationClip, AnimationClip> >(oc.overridesCount); oc.GetOverrides(overrides); int clips = oc.overridesCount; for (int i = 0; i < clips; i++) { string clipName = overrides[i].Key.name; if (!clipName.EndsWith(endsWith)) { string newName = clipName.Substring(0, clipName.Length - endsWith.Length + 1) + endsWith; var newClip = overrides.FindIndex(p => p.Key.name == newName); if (newClip == -1) { continue; } overrides[i] = new KeyValuePair <AnimationClip, AnimationClip>(overrides[i].Key, overrides[newClip].Key); } } oc.ApplyOverrides(overrides); }
public void Start() { var animator = GetComponent <Animator>(); var animationOverride = new AnimatorOverrideController(animator.runtimeAnimatorController); var anims = new List <KeyValuePair <AnimationClip, AnimationClip> >(); foreach (var oldAnimation in animationOverride.animationClips) { if (moveLeft != null && oldAnimation.name == moveRightClipName) { anims.Add(new KeyValuePair <AnimationClip, AnimationClip>(oldAnimation, moveRight)); } else if (oldAnimation.name == moveLeftClipName) { anims.Add(new KeyValuePair <AnimationClip, AnimationClip>(oldAnimation, moveLeft)); } else if (oldAnimation.name == idleLeftClipName) { anims.Add(new KeyValuePair <AnimationClip, AnimationClip>(oldAnimation, idleLeft)); } else if (oldAnimation.name == idleRightClipName) { anims.Add(new KeyValuePair <AnimationClip, AnimationClip>(oldAnimation, idleRight)); } else { Debug.LogWarning("AnimationOverrideBehaviour: animation unknown name " + oldAnimation.name); } } animationOverride.ApplyOverrides(anims); animator.runtimeAnimatorController = animationOverride; }
public void Sample() { AnimatorOverrideController aoc = new AnimatorOverrideController(Rac); List <KeyValuePair <AnimationClip, AnimationClip> > overrides = new List <KeyValuePair <AnimationClip, AnimationClip> >(); List <KeyValuePair <AnimationClip, AnimationClip> > overrides1 = new List <KeyValuePair <AnimationClip, AnimationClip> >(); aoc.GetOverrides(overrides); foreach (KeyValuePair <AnimationClip, AnimationClip> pair in overrides) { overrides1.Add(new KeyValuePair <AnimationClip, AnimationClip>(pair.Key, AniClip)); } aoc.ApplyOverrides(overrides1); Ani.runtimeAnimatorController = aoc; Ani.Rebind(); Ani.StopPlayback(); Ani.recorderStartTime = 0; int frameCount = (int)(AniClip.frameRate * AniClip.length); Ani.StartRecording(frameCount); for (int i = 0; i < frameCount; i++) { Ani.Update(1.0f / frameCount); } Ani.StopRecording(); Ani.playbackTime = 0; Ani.StartPlayback(); }
public void switchAnimationClips(StanceData stance) { foreach (var data in stance.stanceAnimation) { animationClipOverrides [data.animation.name] = data.animation; } animatorOverrideController.ApplyOverrides(animationClipOverrides); }
public void InitializedActor(Actor a, string ActorName, RuntimeAnimatorController b = null) { actor = a; a.OnTurn += OnTurn; a.OnExpGain += OnExpGain; a.OnDamage += OnDamage; a.OnKillActor += OnKillingSomeone; a.OnEquip += OnEquip; a.OnDeath += OnDeath; a.OnBlocked += OnBlocked; a.OnApplyEffets += OnApplyEffects; Indicator.color = ActorColor; isAI = !actor.Controllable; if (a.AnimatorPath.Contains("~")) { InverseSprite = true; } this.name = actor.Name; Name = actor.Name; if (b) { foreach (var item in anim) { item.runtimeAnimatorController = b; } } string[] amn = new string[b.animationClips.Length]; animcont = new AnimatorOverrideController(anim[0].runtimeAnimatorController); anim[0].runtimeAnimatorController = animcont; clipov = new AnimationClipOverrides(animcont.overridesCount); animcont.GetOverrides(clipov); for (int i = 0; i < animcont.runtimeAnimatorController.animationClips.Length; i++) { amn[i] = animcont.runtimeAnimatorController.animationClips[i].name; clipov[amn[i]] = Resources.Load <AnimationClip>("Sprites/Animation/Actors/" + ActorName + "/" + amn[i]); } animcont.ApplyOverrides(clipov); if (a.inventory.HasWeapon) { for (int i = 0; i < a.inventory.GetWeapons.Count; i++) { if (i < Wep.Length) { OnEquip(a.inventory.GetWeapons[i]); } } } }