using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerController : MonoBehaviour { private Rigidbody2D rb; [SerializeField]public Animator anim; public bool flashActive; [SerializeField] public float flashLength = 0f; [SerializeField] public float flashCounter = 0f; private SpriteRenderer playerSprite; //private Transform attackBoxTransform; //private BoxCollider2D attackBoxCollider; [SerializeField] private float speed = 0f; private float attackAnimTime = 0.25f; private float attackAnimCounter = 0.25f; private float attackTime = 0.5f; private float attackCounter = 0.5f; private float strongAttackHoldTime = 3f; public bool normalAttack; public bool strongAttack; public bool shield; public int normalPlayerAttack = 10; public int strongPlayerAttack = 15; public int defensePlayer = 5; void Start() { rb = GetComponent<Rigidbody2D>(); anim = GetComponent<Animator>(); playerSprite = GetComponent<SpriteRenderer>(); } private void Update() { if (flashActive) { if (flashCounter > flashLength * .99f) { playerSprite.color = new Color(playerSprite.color.r, playerSprite.color.g, playerSprite.color.b, 0f); } else if (flashCounter > flashLength * .82f) { playerSprite.color = new Color(playerSprite.color.r, playerSprite.color.g, playerSprite.color.b, 1f); } else if (flashCounter > flashLength * .66f) { playerSprite.color = new Color(playerSprite.color.r, playerSprite.color.g, playerSprite.color.b, 0f); } else if (flashCounter > flashLength * .49) { playerSprite.color = new Color(playerSprite.color.r, playerSprite.color.g, playerSprite.color.b, 1f); } else if (flashCounter > flashLength * .33) { playerSprite.color = new Color(playerSprite.color.r, playerSprite.color.g, playerSprite.color.b, 0f); } else if (flashCounter > flashLength * .16f) { playerSprite.color = new Color(playerSprite.color.r, playerSprite.color.g, playerSprite.color.b, 1f); } else if (flashCounter > 0f) { playerSprite.color = new Color(playerSprite.color.r, playerSprite.color.g, playerSprite.color.b, 0f); } else { playerSprite.color = new Color(playerSprite.color.r, playerSprite.color.g, playerSprite.color.b, 1f); flashActive = false; } flashCounter -= Time.deltaTime; } } void FixedUpdate() { float horizontalInput = Input.GetAxisRaw("Horizontal"); float verticalInput = Input.GetAxisRaw("Vertical"); rb.velocity = new Vector2(horizontalInput, verticalInput).normalized * speed * Time.fixedDeltaTime; anim.SetFloat("moveX", rb.velocity.x); anim.SetFloat("moveY", rb.velocity.y); if(Input.GetAxisRaw("Horizontal") == 1 || Input.GetAxisRaw("Horizontal") == -1 || Input.GetAxisRaw("Vertical") == 1 || Input.GetAxisRaw("Vertical") == -1) { anim.SetFloat("LastMoveX", Input.GetAxisRaw("Horizontal")); anim.SetFloat("LastMoveY", Input.GetAxisRaw("Vertical")); } if (normalAttack) { rb.velocity = Vector2.zero; attackAnimCounter -= Time.fixedDeltaTime; if(attackAnimCounter <= 0) { anim.SetBool("isAttacking", false); normalAttack = false; } } else if (strongAttack) { print("Strong Attack Ready"); rb.velocity = Vector2.zero; attackAnimCounter -= Time.fixedDeltaTime; if (attackAnimCounter <= 0) { anim.SetBool("isAttacking", false); strongAttack = false; } } else if (shield) { print("Shield Active"); rb.velocity = Vector2.zero; } attackCounter -= Time.fixedDeltaTime; if(attackCounter <= 0 && shield == false) { // Attack if (Input.GetMouseButton(0)) { strongAttackHoldTime -= Time.fixedDeltaTime; } if (!Input.GetMouseButton(0) && strongAttackHoldTime < 3f) { //Basic Attack if(strongAttackHoldTime > 0) { attackAnimCounter = attackAnimTime; attackCounter = attackTime; anim.SetBool("isAttacking", true); normalAttack = true; strongAttackHoldTime = 3f; } } //Strong Attack if (strongAttackHoldTime <= 0) { attackAnimCounter = attackAnimTime; attackCounter = attackTime; anim.SetBool("isAttacking", true); strongAttack = true; strongAttackHoldTime = 3f; } } //Shield if (Input.GetKey(KeyCode.Space)) { shield = true; } else { shield = false; } //print("strongAttackHoldTime: " + strongAttackHoldTime); } }