Skip to content
Snippets Groups Projects
StepBackScript.cs 1.6 KiB
Newer Older
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

[RequireComponent(typeof(Animator))]
[RequireComponent(typeof(PlayerController))]
[RequireComponent(typeof(Rigidbody2D))]
public class StepBackScript : MonoBehaviour
{
    private Animator animatorController;
    private PlayerController playerController;
    private Rigidbody2D rb;
    private bool isActive;
    [SerializeField] float speedModifier;
    // Use this for initialization
    void Start ()
    {
        playerController = GetComponentInParent<PlayerController>();
        animatorController = GetComponent<Animator>();
        rb = GetComponent<Rigidbody2D>();
        StepBackBehaviour.action += updateState;
        isActive = false;
    }

    // Update is called once per frame
    private void Update()
    {
        if (playerController.isMyturn() && !playerController.isSkillUsing() && Input.GetKeyDown(playerController.controlType.getStepBackInput()))
        {
            activateSkill("stepBack");
        }
    }
    {
        playerController.updateMovementLockStates();
        animatorController.SetTrigger("StepBack");
        while(isActive)
        {
            rb.velocity = new Vector2(1, playerController.currentHand) * playerController.getSpeed() * speedModifier;
            yield return null;
        }
        playerController.updateMovementLockStates();
    }
    private void activateSkill(string method)
    {
        StopCoroutine("move");
        StartCoroutine(method);
    }

    private void updateState()
    {
        isActive = isActive == true? false : true;
    }