public override void Draw(SpriteBatch spriteBatch)
        {
            Tint = (DamageCooldown.Ready()) ? Color.White : Color.Red;
            base.Draw(spriteBatch);

            Entity nearestEnemy         = null;
            float  nearestEnemyDistance = float.MaxValue;

            foreach (Entity e in Map.Entities)
            {
                if (!(e is Enemy))
                {
                    continue;
                }
                float distance = (e.Center - Center).Length();
                if (distance < nearestEnemyDistance)
                {
                    nearestEnemy         = e;
                    nearestEnemyDistance = distance;
                }
            }
            if (nearestEnemy != null)
            {
                Vector2 diff      = nearestEnemy.Center - Center;
                float   angle     = (float)Math.Atan2(diff.Y, diff.X);
                Vector2 indCenter = (Util.AngleToVector(angle) * 20);
                //            spriteBatch.Draw(Sprite, Center, null, Tint, Rotation, Center-Position, Vector2.One, SpriteEffects.None, 0);
                spriteBatch.Draw(Art.bullet,
                                 Center + indCenter,
                                 null,
                                 Color.Red,
                                 angle,
                                 -new Vector2(Art.bullet.Width / 2, Art.bullet.Height / 2),
                                 Vector2.One,
                                 SpriteEffects.None,
                                 0);
            }

//            MouseState mouse = Mouse.GetState();
//            Vector2 mouseVector = Util.MouseVector(mouse);
//            mouseVector -= Map.Camera.Position;
//            Util.DrawDebugLine(spriteBatch, Center, mouseVector, Color.Black);
//            Util.DrawDebugLine(spriteBatch, Position, Center, Color.Red);
//            Util.DrawDebugRect(spriteBatch, Position, Sprite.Width, Sprite.Height, Color.Black);
//            Vector2 rotationVector = Util.AngleToVector(Rotation);
//            Vector2 rotationVectorPerp = Util.AngleToVector(Rotation + Math.PI / 2);
//            Util.DrawDebugLine(spriteBatch, Center, Center + rotationVector * 10 + rotationVectorPerp * 4, Color.Green);
        }
 public override void Damage(float damage)
 {
     DamageCooldown.Activate(damage);
 }
Esempio n. 3
0
 void Start()
 {
     healthReserve  = GetComponent <HealthReserve>();
     damageCooldown = GetComponent <DamageCooldown>();
     deathText      = GetComponent <DeathText>();
 }