public void StartNewCooldown(float duration, KnockbackState sender) { Task.Factory.StartNew(async() => { await Task.Delay((int)(duration * 1000)); sender.IsKnockedBacked = true; }); }
internal override void Awake() { base.Awake(); var playerAnimator = GetComponent <Animator>(); var playerRigidBody = GetComponent <Rigidbody>(); var playerCollider = GetComponent <Collider>(); Punch = new PunchState(playerAnimator, actorAnimations.ActorAttacking, DonePunching); Idle = new IdleState(playerAnimator, actorAnimations.ActorIdle); Grounded = new GroundedState(); Jump = new JumpState(playerCollider, playerRigidBody, JumpSpeed, EvalJumpData); DiveKick = new DiveKickState(playerRigidBody, 20f, ActorLookingRight); Knockback = new KnockbackState(playerCollider, 5f, ActorLookingRight, EvalKnockbackResult); actionState.ChangeState(Idle); movementState.ChangeState(Grounded); }
// Use this for initialization protected override void Start() { m_CurrentHealth = m_MaxHealth; m_StateMachine = GetComponent<StateMachine>(); m_Knockback = GetComponent<KnockbackState>(); m_ObjectPool = FindObjectOfType<ObjectPool>(); m_CharacterAnimator = GetComponent<AnimatorHandler>().m_CharacterAnimator; m_LayerName = LayerMask.LayerToName(gameObject.layer); }