public void Do() { var attackEnemy = Unit.GetAct <AttackEnemy>(); if (Unit.IsAtAttackDistance(Enemy)) { if (attackEnemy == null) { Unit.AddAct(new AttackEnemy(Unit, Enemy)); } } else { if (attackEnemy != null) { Unit.RemoveAct(attackEnemy); } //var move = (Enemy.Position - Unit.Position).ToLength(Unit.Speed); //Unit.Position += move + Unit.GetMoveIntersectCorrection(move); var move = Unit.MoveToEnemy(Enemy); //Debug.WriteLine($"{Unit.Id}: {move}"); Unit.Position += move; // + Unit.GetMoveIntersectCorrection(move); log.Debug($"{Unit.Id} move to Enemy {Enemy.Id}"); } }
public static void Kill(this Unit unit) { var kill = unit.GetAct <Kill>(); if (kill == null) { unit.AddAct(new Kill(unit)); } }