// 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>(); }
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); } }
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)]); }