menu/MenuZombie.cs
using SpriteTools;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
public class MenuZombie : MenuEnemy
{
public override float HeightVariance => 0.065f;
public override float WidthVariance => 0.035f;
[Property] public Sprite NormalSprite { get; set; }
[Property] public Sprite EvolvedSprite { get; set; }
[Property] public Sprite EvolvedBloodySprite { get; set; }
protected override void OnAwake()
{
base.OnAwake();
if ( DifficultyTracker.Instance.Difficulty >= 4 )
Sprite.Sprite = Game.Random.Float( 0f, 1f ) < 0.7f ? EvolvedSprite : EvolvedBloodySprite;
}
protected override void OnStart()
{
base.OnStart();
}
protected override void OnUpdate()
{
base.OnUpdate();
float animSpeed = Utils.Map( Utils.FastSin( AnimSpeedOffset + Time.Now * 7.5f ), -1f, 1f, 0.75f, 3f, EasingType.ExpoIn );
Sprite.PlaybackSpeed = animSpeed;
Velocity += new Vector3( IsFlipped ? 1f : -1f, 0f, 0f ) * Time.Delta;
float speed = (IsAttacking ? 1.3f : 0.7f) + Utils.FastSin( AnimSpeedOffset + Time.Now * (IsAttacking ? 15f : 7.5f) ) * (IsAttacking ? 0.66f : 0.35f);
WorldPosition += Velocity * speed * SpeedModifier * Time.Delta;
if ( Math.Abs( WorldPosition.x ) > 150f )
{
GameObject.Destroy();
return;
}
}
}