Пример #1
0
 // Start is called before the first frame update
 void Awake()
 {
     obj  = PoolManager.Instance.GetObject(PoolObjectType.BULLETINFO);
     info = obj.GetComponent <BulletInfo>();
     obj.SetActive(true);
     bulletCollider = GetComponent <Collider>();
 }
Пример #2
0
        public void TakeDamage(BulletInfo info)
        {
            CameraManager.Instance.ShakeCamera(0.25f);

            //Debug.Log(info.Attacker.gameObject.name + " hits " + this.gameObject.name);
            //Debug.Log(this.gameObject.name + " hit " + DamagePart.ToString());
            //control.SkinnedMeshAnimator.runtimeAnimatorController = info.attackAbility.GetDeathAnimator();

            info.CurrentHits++;
            CharacterControl control = GetComponent <CharacterControl>();

            control.currentHP -= info.damageAmount;
            if (info.hitSound)
            {
                audioSource.clip = info.hitSound;
                audioSource.Play();
            }
            if (control.currentHP <= 0)
            {
                control.SkinnedMeshAnimator.runtimeAnimatorController = DeathAnimationManager.Instance.GetAnimator(DamagePart, info);
                alive = false;
                boxCollider.enabled           = false;
                control.RIGID_BODY.useGravity = false;
                if (control.edgeChecker)
                {
                    control.edgeChecker.GetComponent <BoxCollider>().enabled = false;
                }
                uIController.StartCoroutine(uIController.HideEnemyPanel());
                if (tag == "Enemy")
                {
                    botManager.currentEnemyAmount -= 1;
                }
            }
            else
            {
                control.SkinnedMeshAnimator.runtimeAnimatorController = DeathAnimationManager.Instance.GetHittedAnimator();
            }
            if (tag == "Enemy")
            {
                uIController.UpdateEnemyUI(control);
            }
        }
Пример #3
0
        public RuntimeAnimatorController GetAnimator(GeneralBodyPart generalBodyPart, BulletInfo info)
        {
            SetupDeathAnimationLoader();

            Candidates.Clear();

            foreach (DeathAnimationData data in deathAnimationLoader.DeathAnimationDataList)
            {
                if (info.LaunchIntoAir)
                {
                    if (data.LaunchIntoAir)
                    {
                        Candidates.Add(data.Animator);
                    }
                }
                else
                {
                    foreach (GeneralBodyPart part in data.GeneralBodyParts)
                    {
                        if (part == generalBodyPart)
                        {
                            Candidates.Add(data.Animator);
                            break;
                        }
                    }
                }
            }
            return(Candidates[Random.Range(0, Candidates.Count)]);
        }