Beispiel #1
0
    void Die()
    {
        if (m_Dead)
        {
            return;
        }

        GlobalData.DispatchHeroDied();

        m_Dead    = true;
        m_CanMove = false;
        m_CanJump = false;
        m_Rigidbody2D.freezeRotation = false;

        var velocity = m_Rigidbody2D.velocity;

        velocity.y             = m_DeathVelocity;
        m_Rigidbody2D.velocity = velocity;
        var angularVelocity = m_FacingLeft ? m_DeathAngularVelocity : -m_DeathAngularVelocity;

        m_Rigidbody2D.angularVelocity = angularVelocity;

        if (m_Boosting)
        {
            EndBoosting();
        }

        m_DeathSequence.Cancel();
        m_DeathSequence = ActionMaster.Actions.Sequence();
        m_DeathSequence.SpriteAlpha(m_BodySpriteRenderer.gameObject, 0, m_DeathPreDelay, new Ease(Ease.Quad.Out));
        m_DeathSequence.Call(Return, gameObject);
        m_DeathSequence.Delay(m_DeathPostDelay);
        m_DeathSequence.Call(RegainControl, gameObject);
    }
Beispiel #2
0
    private void BlinkDelay()
    {
        var delay             = Random.Range(m_MinDelay, m_MaxDelay);
        var shouldDoubleBlink = Random.value < m_DoubleBlinkProbability;

        m_BlinkSequence.Delay(delay);

        if (shouldDoubleBlink)
        {
            m_BlinkSequence.Call(DoubleBlink, gameObject);
        }
        else
        {
            m_BlinkSequence.Call(Blink, gameObject);
        }
    }
    public void OnDied(HealthEventData eventData)
    {
        if (!enabled)
        {
            return;
        }

        enabled = false;

        if (m_IsTheHero)
        {
            GlobalData.DispatchHeroDied();
        }

        m_Rigidbody.freezeRotation = false;
        var velocity = m_Rigidbody.velocity;

        velocity.y = m_DeathSpeed;
        var angularVelocity = Random.Range(-m_DeathAngularVelocity, m_DeathAngularVelocity);

        m_Rigidbody.velocity        = velocity;
        m_Rigidbody.angularVelocity = angularVelocity;

        m_DeathSequence.Cancel();
        m_DeathSequence = ActionMaster.Actions.Sequence();
        m_DeathSequence.SpriteAlpha(m_BodySpriteRenderer.gameObject, 0, m_DeathDuration, new Ease(Ease.Quad.Out));
        m_DeathSequence.Call(SequenceEnd, gameObject);
    }
Beispiel #4
0
    void Squash()
    {
        var squashScale = m_SquashScale;
        var duration    = m_Duration / 2;

        if (m_AmplifyBySpeed)
        {
            var currentPosition     = m_Transform.position;
            var difference          = currentPosition - m_PreviousPosition;
            var projection          = Vector3.Dot(difference, m_SquashDirection);
            var currentSpeed        = Mathf.Abs(projection) / Time.deltaTime;
            var amplificationFactor = currentSpeed / m_ReferenceSpeed;
            var interpolant         = Mathf.Clamp(amplificationFactor, 0, m_MaxAmplificationFactor);

            squashScale = Vector3.LerpUnclamped(Vector3.one, m_SquashScale, interpolant);
            duration   *= interpolant;
        }

        m_Events.SquashStarted.Invoke();

        m_SquashSequence = ActionMaster.Actions.Sequence();
        m_SquashSequence.Scale(m_SquashNode.gameObject, squashScale, duration, new Ease(Ease.Quad.Out));
        m_SquashSequence.Scale(m_SquashNode.gameObject, Vector3.one, duration, new Ease(Ease.Quad.In));
        m_SquashSequence.Call(EndSequence, gameObject);
    }
Beispiel #5
0
  void Deactivate()
  {
    m_Active = false;
    m_Image.raycastTarget = false;

    m_ActivationSequence.Cancel();
    m_ActivationSequence = ActionMaster.Actions.Sequence();
    m_ActivationSequence.UiAlpha(gameObject, 0, m_TintDuration);
    m_ActivationSequence.Call(EndDeactivate, gameObject);
  }
Beispiel #6
0
    void FadeIn(Color color, float fadeDuration, float delay)
    {
        color.a         = 0;
        m_Image.enabled = true;
        m_Image.color   = color;

        m_FadeSequence.Cancel();
        m_FadeSequence = ActionMaster.Actions.Sequence();
        m_FadeSequence.UiAlpha(gameObject, 1, fadeDuration, new Ease(Ease.Quad.InOut));
        m_FadeSequence.Delay(delay);
        m_FadeSequence.Call(FadeInEnded, gameObject);
    }
Beispiel #7
0
 void FadeOut(float duration)
 {
     m_FadeSequence.UiAlpha(gameObject, 0, duration, new Ease(Ease.Quad.InOut));
     m_FadeSequence.Call(FadeOutEnded, gameObject);
 }