public bool Withdraw() { if (state == KnifeState.InSheath || actionTimer > 0 || returning) { return(false); } returning = true; actionTimer = actionDelay; transform.parent = null; state = KnifeState.Flying; if (hittedEnemy != null) { var dir = (sheath.transform.position - transform.position).normalized; hittedEnemy.Hit(dir, 0.8f); hittedEnemy.AddForce(dir * dragForce); } basicAttack = AttackPackage.CreateNewPackage(); hittedEnemy = null; Returning(); return(true); }
public bool Launch(Vector3 direction, bool isPiercing = false) { if (state != KnifeState.InSheath) { return(false); } piercing = isPiercing; actionTimer = actionDelay; state = KnifeState.Flying; transform.position = sheath.LaunchPosition.position; transform.right = direction; basicAttack = AttackPackage.CreateNewPackage(); return(true); }
public bool Hover() { if (hovered || returning || state != KnifeState.Flying || actionTimer > 0) { return(false); } piercing = false; hovered = true; actionTimer = actionDelay; state = KnifeState.Hover; basicAttack = AttackPackage.CreateNewPackage(); return(true); }
public void Activate() { AttackPackage attack = AttackPackage.CreateNewPackage(); weapon.Activate(attack); }
private void HandleFrameEvent(FrameEventEventArg eventArgs) { if (eventArgs._name == AnimEventNames.AttackBegin) { var attack = AttackPackage.CreateNewPackage(); attack._hitPointDamage.Base = _state._hitPointDamage; attack._enduranceDamage.Base = _state._enduranceDamage; _weapon.Activate(attack, _currentMove); if (eventArgs._animation.name == BossFSMData.Anim.Slash1 || eventArgs._animation.name == BossFSMData.Anim.Slash2) { foreach (var collider in _slashAttackBoxes) { collider.enabled = true; } _collider.gameObject.layer = LayerMask.NameToLayer("EnemyDash"); OnBeginDashingInvincible?.Invoke(); } if (eventArgs._animation.name == BossFSMData.Anim.Combo2_3) { foreach (var collider in _combo2AttackBoxes) { collider.enabled = true; } _collider.gameObject.layer = LayerMask.NameToLayer("EnemyDash"); OnBeginDashingInvincible?.Invoke(); } if (eventArgs._animation.name == BossFSMData.Anim.Combo3_2) { foreach (var collider in _thrustAttackBoxes) { collider.enabled = true; } _collider.gameObject.layer = LayerMask.NameToLayer("EnemyDash"); OnBeginDashingInvincible?.Invoke(); } } else if (eventArgs._name == AnimEventNames.AttackEnd) { _weapon.Deactivate(); if (eventArgs._animation.name == BossFSMData.Anim.Slash1 || eventArgs._animation.name == BossFSMData.Anim.Slash2) { foreach (var collider in _slashAttackBoxes) { collider.enabled = false; } _collider.gameObject.layer = LayerMask.NameToLayer("RejectCollider"); OnStopDashingInvincible?.Invoke(); } if (eventArgs._animation.name == BossFSMData.Anim.Combo2_3) { foreach (var collider in _combo2AttackBoxes) { collider.enabled = false; } _collider.gameObject.layer = LayerMask.NameToLayer("RejectCollider"); OnStopDashingInvincible?.Invoke(); } if (eventArgs._animation.name == BossFSMData.Anim.Combo3_2) { foreach (var collider in _thrustAttackBoxes) { collider.enabled = false; } _collider.gameObject.layer = LayerMask.NameToLayer("RejectCollider"); OnStopDashingInvincible?.Invoke(); } } }