using System.Collections; using System.Collections.Generic; using UnityEngine; [RequireComponent(typeof(Animator))] [RequireComponent(typeof(Controller))] [RequireComponent(typeof(Rigidbody2D))] public class CrossOverScript : MonoBehaviour { private Animator animatorController; private Controller controller; private Rigidbody2D rb; private bool isActive; private bool usingAxis; [SerializeField] float speedModifier; // Use this for initialization void Start () { controller = GetComponent<Controller>(); animatorController = GetComponent<Animator>(); rb = GetComponent<Rigidbody2D>(); isActive = false; usingAxis = false; } // Update is called once per frame private void Update() { if (controller.getCrossOverInput() == 1) { if (controller.isMyturn() && !controller.isSkillUsing() && !usingAxis) { StopCoroutine("move"); animatorController.SetTrigger("CrossOver"); } usingAxis = true; } else { usingAxis = false; } } private IEnumerator crossOver() { controller.updateMovementLockStates(); while(isActive) { rb.velocity = new Vector2(-1, controller.currentHand) * controller.getSpeed() * speedModifier; yield return null; } controller.updateMovementLockStates(); } private void updateState() { isActive = isActive == true? false : true; StartCoroutine(crossOver()); } public virtual void OnDisable() { CrossOverBehaviour.action -= updateState; } public virtual void OnEnable() { CrossOverBehaviour.action += updateState; } }