using System.Collections;
using UnityEngine;
using UnityEngine.InputSystem;
public class PlayerAttack : MonoBehaviour
{
public PlayerMovement player;
public Animator animator;
public InputActionReference lightAttack;
public InputActionReference heavyAttack;
public float attackCooldown;
public int attacksBeforeCooldown;
public AnimationClip attackAnim;
public float lungeDistance;
void Update()
{
if(player.currentState == PlayerState.ability || player.currentState == PlayerState.attack
|| player.currentState == PlayerState.interact)
{
return;
}
if(lightAttack.action.WasPressedThisFrame())
{
StartCoroutine(AttackCo());
}
if(heavyAttack.action.WasPressedThisFrame())
{
StartCoroutine(AttackCo());
}
else
{
player.currentState = PlayerState.idle;
animator.SetBool("Attacking", false);
}
}
private IEnumerator AttackCo()
{
Vector2 facingDirection = new Vector2(animator.GetFloat("Horizontal"), animator.GetFloat("Vertical"));
Debug.Log("attacked");
animator.SetBool("Attacking", true);
player.rb.position = player.rb.position + facingDirection * lungeDistance;
player.currentState = PlayerState.attack;
yield return null;
animator.SetBool("Attacking", false);
yield return new WaitForSeconds (attackAnim.length);
if (player.currentState != PlayerState.interact)
{
player.currentState = PlayerState.idle;
}
}
}