using System.Collections; using System.Collections.Generic; using UnityEngine; [RequireComponent(typeof(Animator))] [RequireComponent(typeof(PlayerController))] [RequireComponent(typeof(Rigidbody2D))] public class CrossOverScript : 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>(); CrossOverBehaviour.action += updateState; isActive = false; } // Update is called once per frame private void Update() { if (playerController.isMyturn() && !playerController.isSkillUsing() && Input.GetKeyDown(playerController.controlType.getCrossOverInput())) { activateSkill("crossOver"); } } private IEnumerator crossOver() { playerController.updateMovementLockStates(); animatorController.SetTrigger("CrossOver"); 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; } }