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); }
void Start() { healthReserve = GetComponent <HealthReserve>(); damageCooldown = GetComponent <DamageCooldown>(); deathText = GetComponent <DeathText>(); }