public override void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { if (characterControl == null) { CharacterControl control = animator.transform.root.GetComponent <CharacterControl>(); control.CacheCharacterControl(animator); } foreach (StateData d in ListAbilityData) { d.OnEnter(this, animator, stateInfo); } }
private void TakeDamage(AttackInfo info) { control.CacheCharacterControl(control.SkinnedMeshAnimator); control.RIGID_BODY.velocity = Vector3.zero; float dam = info.AttackAbility.damage; float w = control.weight; float s = info.AttackAbility.scaler; float b = info.AttackAbility.baseMultiplier; if (control.FaceLeft) { control.RIGID_BODY.AddForce(Vector3.forward * (((((7 * (dam + 2) * (hp)) / (w + 100)) + 9) * (2 * s)) + b)); } if (control.FaceRight) { control.RIGID_BODY.AddForce(-Vector3.forward * (((((7 * (dam + 2) * (hp)) / (w + 100)) + 9) * (2 * s)) + b)); } if (info.CurrentHits != info.MaxHits) { if (info.MustCollide) { hp += info.AttackAbility.damage; info.CurrentHits++; } } if (IsDead()) { Respawn(); } else { control.SkinnedMeshAnimator.runtimeAnimatorController = null; control.SkinnedMeshAnimator.runtimeAnimatorController = HitReactionList[0]; } Debug.Log(info.Attacker.gameObject.name + " hits: " + this.gameObject.name); Debug.Log(this.gameObject.name + " hit in " + DamagedPart.ToString()); //control.SkinnedMeshAnimator.runtimeAnimatorController = info.AttackAbility.GetDeathAnimator(); }
private void TakeDamage(AttackInfo info) { if (IsDead()) { return; } float d = info.getDamage(); float h = GetHP(); float s = info.scaler; float b = info.baseMultiplier; float partA = (d + 2); float partB = (d + h); float partC = (info.Attacker.GetWeight() + 100); float numerator = (partA * partB * 7); float fraction = numerator / partC; float inner = fraction + 9; float innerTwo = 2 * s; inner *= innerTwo; inner += b; float knockback = inner; if (info.Attacker.FaceLeft) { control.RIGID_BODY.AddForce(-(new Vector3(info.knockAngle.x, -info.knockAngle.y, info.knockAngle.z)) * knockback * 10); } else { control.RIGID_BODY.AddForce(info.knockAngle * knockback * 10); } control.CacheCharacterControl(control.SkinnedMeshAnimator); info.CurrentHits++; HP += info.AttackAbility.damage; if (info.AttackAbility.throwable) { bruh(); Destroy(GameObject.Find(info.objectName)); } if (IsDead()) { control.SkinnedMeshAnimator.runtimeAnimatorController = DeathAnimationManager.Instance.GetAnimator(DamagedPart); } else { //Debug.Log("Player is not dead"); //reaction } AttackManager.Instance.ForceDeregister(control); }