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); }
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); }
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); }
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); }
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); }
void FadeOut(float duration) { m_FadeSequence.UiAlpha(gameObject, 0, duration, new Ease(Ease.Quad.InOut)); m_FadeSequence.Call(FadeOutEnded, gameObject); }