Newer
Older
TheVengeance-Project-IADE-Unity2D / Assets / Scripts / Player / PlayerController.cs
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);
    }
}