Exemplo n.º 1
0
    IEnumerator Reload()
    {
        if (reloading || primaryWeapon.ammo >= primaryWeapon.maxAmmo && weaponEquip == 0 || secondaryWeapon.ammo >= secondaryWeapon.maxAmmo && weaponEquip == 1 || spareAmmo <= 0)
        {
            yield break;
        }
        reloading = true;
        float wait = 0;
        PlayerMecanimAnimation mecanim = GetComponent <PlayerMecanimAnimation>();

        if (weaponEquip == 0)         //Primary Weapon
        {
            if (primaryWeapon.reloadSound)
            {
                GetComponent <AudioSource>().PlayOneShot(primaryWeapon.reloadSound);
            }
            if (useMecanim)
            {
                //Mecanim
                mecanim.animator.SetLayerWeight(mecanim.upperBodyLayer, 1);
                mecanim.AttackAnimation(primaryWeapon.reloadAnimation.name);
                wait = mecanim.animator.GetCurrentAnimatorClipInfo(0).Length;
            }
            else
            {
                //Legacy
                mainModel.GetComponent <Animation>()[primaryWeapon.reloadAnimation.name].layer = 6;
                mainModel.GetComponent <Animation>().Play(primaryWeapon.reloadAnimation.name);
                wait = mainModel.GetComponent <Animation>()[primaryWeapon.reloadAnimation.name].length;
            }
            yield return(new WaitForSeconds(wait));
        }
        else
        {
            if (secondaryWeapon.reloadSound)
            {
                GetComponent <AudioSource>().PlayOneShot(secondaryWeapon.reloadSound);
            }
            if (useMecanim)
            {
                //Mecanim
                mecanim.animator.SetLayerWeight(mecanim.upperBodyLayer, 1);
                mecanim.AttackAnimation(secondaryWeapon.reloadAnimation.name);
                wait = mecanim.animator.GetCurrentAnimatorClipInfo(0).Length;
            }
            else
            {
                //Legacy
                mainModel.GetComponent <Animation>()[secondaryWeapon.reloadAnimation.name].layer = 6;
                mainModel.GetComponent <Animation>().Play(secondaryWeapon.reloadAnimation.name);
                wait = mainModel.GetComponent <Animation>()[secondaryWeapon.reloadAnimation.name].length;
            }
            yield return(new WaitForSeconds(wait));
        }
        if (useMecanim)
        {
            mecanim.animator.SetLayerWeight(mecanim.upperBodyLayer, 0);
        }
        ResetAmmo();
        reloading = false;
    }
Exemplo n.º 2
0
    IEnumerator SwapWeapon()
    {
        /*if(reloading){
         * return;
         * }*/
        StopCoroutine("Reload");

        if (onAiming)
        {
            Camera.main.fieldOfView = 60;
            onAiming = false;
        }
        PlayerMecanimAnimation mecanim = GetComponent <PlayerMecanimAnimation>();

        if (weaponEquip == 0)
        {
            //Swap from Primary to Secondary
            if (!secondaryWeapon.bulletPrefab)
            {
                yield break;                    //Do Nothing If you don't have Secondary Weapon's Bullet
            }
            if (primaryWeaponModel)
            {
                primaryWeaponModel.SetActive(false);
            }
            if (secondaryWeaponModel)
            {
                secondaryWeaponModel.SetActive(true);
            }
            weaponEquip = 1;
            if (!useMecanim && secondaryWeapon.equipAnimation)
            {
                //For Legacy Animation
                mainModel.GetComponent <Animation>()[secondaryWeapon.equipAnimation.name].layer = 10;
                mainModel.GetComponent <Animation>().Play(secondaryWeapon.equipAnimation.name);
                freeze = true;
                float wait = mainModel.GetComponent <Animation>()[secondaryWeapon.equipAnimation.name].length;
                yield return(new WaitForSeconds(wait));

                freeze = false;
            }
            else
            {
                //For Mecanim Animation
                mecanim.animator.SetLayerWeight(mecanim.upperBodyLayer, 1);
                GetComponent <PlayerMecanimAnimation>().PlayAnim(secondaryWeapon.equipAnimation.name);
                freeze = true;
                float wait = GetComponent <PlayerMecanimAnimation>().animator.GetCurrentAnimatorClipInfo(0).Length - 0.4f;
                yield return(new WaitForSeconds(wait));

                mecanim.animator.SetLayerWeight(mecanim.upperBodyLayer, 0);
                freeze = false;
            }
        }
        else
        {
            //Swap from Secondary to Primary
            if (!primaryWeapon.bulletPrefab)
            {
                yield break;                 //Do Nothing If you don't have Primary Weapon's Bullet
            }
            if (primaryWeaponModel)
            {
                primaryWeaponModel.SetActive(true);
            }
            if (secondaryWeaponModel)
            {
                secondaryWeaponModel.SetActive(false);
            }
            weaponEquip = 0;
            if (!useMecanim && primaryWeapon.equipAnimation)
            {
                //For Legacy Animation
                mainModel.GetComponent <Animation>()[primaryWeapon.equipAnimation.name].layer = 10;
                mainModel.GetComponent <Animation>().Play(primaryWeapon.equipAnimation.name);
                freeze = true;
                float wait = mainModel.GetComponent <Animation>()[primaryWeapon.equipAnimation.name].length;
                yield return(new WaitForSeconds(wait));

                freeze = false;
            }
            else
            {
                //For Mecanim Animation
                mecanim.animator.SetLayerWeight(mecanim.upperBodyLayer, 1);
                GetComponent <PlayerMecanimAnimation>().PlayAnim(primaryWeapon.equipAnimation.name);
                freeze = true;
                float wait = GetComponent <PlayerMecanimAnimation>().animator.GetCurrentAnimatorClipInfo(0).Length - 0.4f;
                yield return(new WaitForSeconds(wait));

                mecanim.animator.SetLayerWeight(mecanim.upperBodyLayer, 0);
                freeze = false;
            }
        }
        if (!useMecanim)
        {
            GetComponent <PlayerLegacyAnimation>().SetAnimation();
        }
        else
        {
            GetComponent <PlayerMecanimAnimation>().SetAnimation();
            GetComponent <PlayerMecanimAnimation>().SetIdle();
        }
        SettingWeapon();
    }