コード例 #1
0
            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();
                }
            }
コード例 #2
0
            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>();
                }
            }
コード例 #3
0
            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>();
                }
            }