public override void AI(SMProjectile proj) { var projectile = proj.projectile; projectile.rotation -= 0.05f * projectile.velocity.Length(); Player owner = Main.player[projectile.owner]; projectile.velocity = Vector2.Normalize(owner.Center - projectile.Center) * 9f; if (projectile.Hitbox.Intersects(owner.Hitbox)) { projectile.Kill(); } }
public override void AI(SMProjectile proj) { var projectile = proj.projectile; projectile.rotation += 0.05f * projectile.velocity.Length(); proj.Timer++; float factor = proj.Timer / 90f; factor *= factor; projectile.velocity = Vector2.Normalize(projectile.velocity) * 9f * (1.0f - factor); if (proj.Timer >= 90) { proj.SetState <ChaseState>(); } }
public override void AI(SMProjectile proj) { var projectile = proj.projectile; proj.Timer++; projectile.rotation += 0.05f * projectile.velocity.Length(); var target = ProjUtils.FindNearestEnemy(projectile.Center, 1000, (npc) => npc.value > 1 || npc.damage > 1); if (target != null) { var unit = Vector2.Normalize(target.Center - projectile.Center); projectile.velocity = (projectile.velocity * 15f + unit * 10f) / 16f; } if (proj.Timer >= 300) { proj.SetState <BackwardState>(); } }