Esempio n. 1
0
    public override void DoBeforeEntering()
    {
        // SI hay suscriptores a este evento, NO lanzar ataque
        if (LaunchPunchAction != null)
        {
            LaunchPunchAction();
            fsm.PerformTransition(Transition.CrushToMove);
            return;
        }

        //rigidbody2D.isKinematic = true;
        rigidBody2D.velocity     = Vector2.zero;
        store_GravityScale       = rigidBody2D.gravityScale;
        rigidBody2D.gravityScale = 0;
        anim.SetBool("isCrushing", true);
        anim.SetTrigger("CrushTrigger");

        ManagerPause.SubscribeOnPauseGame(OnPauseGame);
        ManagerPause.SubscribeOnResumeGame(OnResumeGame);

        anim.SetFloat("CrushDir", directionAxis);

        //Defino al direccion del golpe:
        if (directionAxis > inputOffset && canPuchUp)//arriba
        {
            typeC       = TypeCrush.Upper;
            useForceUp  = true;
            canPuchUp   = false;
            timerPuchUp = false;
            moveState.SetIsNONWhenJump();
            StartCoroutine("StartCrush", TimeToCrushUp);
            StartCoroutine(timerVar.StartTime(SetTimerPushUp, TimeToPushUp + TimeToCrushUp));
            highHitSFX.Spawn(transform.position, transform.rotation);
        }
        else if (directionAxis < -1 * inputOffset)//abajo
        {
            typeC  = TypeCrush.Down;
            isDown = true;
            moveState.RemoveLayerToWhatisGround("Obstacle");
            StartCoroutine("StartCrush", TimeToCrushDown);
            lowHitSFX.Spawn(transform.position, transform.rotation);
        }
        else//middle
        {
            typeC                = TypeCrush.Middle;
            puno.enabled         = true;
            punoRenderer.enabled = true;

            StartCoroutine("StartCrush", TimeToCrush);
            anim.SetFloat("CrushDir", 0);
            middleHitSFX.Spawn(transform.position, transform.rotation);
        }
    }