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();
        }
    }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
    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);
    }
Ejemplo n.º 4
0
		/// 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);
    }
Ejemplo n.º 6
0
        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;
        }
Ejemplo n.º 7
0
    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();
    }
Ejemplo n.º 8
0
 public void switchAnimationClips(StanceData stance)
 {
     foreach (var data in stance.stanceAnimation)
     {
         animationClipOverrides [data.animation.name] = data.animation;
     }
     animatorOverrideController.ApplyOverrides(animationClipOverrides);
 }
Ejemplo n.º 9
0
    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]);
                }
            }
        }
    }