Beispiel #1
0
        /// <summary>
        /// Constructor for missile
        /// </summary>
        /// <param name="spawnPos">Start position</param>
        /// <param name="initialAim">Position missile is initally aimed at</param>
        /// <param name="ownerSprite">Sprite that fired this missile</param>
        /// <param name="targetSprite">Target for missile</param>
        /// <param name="missileSpeed">Velocity of missile</param>
        /// <param name="maxTurn">Maximum turning angle for missile</param>
        /// <param name="lifetime">How many seconds this missile lives for</param>
        /// <param name="missileDamage">Damage on impact</param>
        public Missile(Vector2 spawnPos, Vector2 initialAim, Sprite ownerSprite, Sprite targetSprite, float missileSpeed, float maxTurn, float lifetime, int missileDamage)
        {
            //Assigning variables
            owner      = ownerSprite;
            target     = targetSprite;
            damage     = missileDamage;
            turnAmount = maxTurn;
            speed      = missileSpeed;

            //Events
            GM.eventM.AddTimer(tiLifetimeCounter = new Event(lifetime, "Lifetime Counter"));
            GM.eventM.AddTimer(tiSmokeCounter    = new Event(0.5f, "Smoke Counter"));

            //Graphics
            GM.engineM.AddSprite(this);
            Frame.Define(Tex.SingleWhitePixel);
            Wash = Color.OrangeRed;
            SX   = 8;
            SY   = 32;

            //Sound effect


            Moving           = true;
            CollisionActive  = true;
            CollisionPrimary = true;

            UpdateCallBack   += Move;
            PrologueCallBack += Hit;

            RotationHelper.FacePosition(this, new Vector3(initialAim, 0), DirectionAccuracy.free, 0, false);

            Position2D = spawnPos;
        }
Beispiel #2
0
        private void Move()
        {
            //For gunSprite
            Vector2 playerPos = GameSetup.PlayerChar.Position2D;
            Vector2 direction = playerPos - Position2D;

            direction = Vector2.Normalize(direction);
            RotationHelper.FaceDirection(gunSprite, direction, DirectionAccuracy.free, 0);
            gunSprite.Position2D = Position2D + (direction * 15);
            Vector2 currentPosition = Position2D;

            //For movement:
            float distanceFromPlayer = Vector2.Distance(Position2D, playerPos);

            if (distanceFromPlayer > 200)
            {
                //Move towards player
                RotationHelper.FacePosition(this, GameSetup.PlayerChar.Position, DirectionAccuracy.free, 0, false);
                RotationHelper.VelocityInCurrentDirection(this, 500, 0);
            }
            if (distanceFromPlayer < 400)
            {
                //Switch strafe direction after 2 seconds
                int dirMultiplier = 1;
                if (tiSwitchDirection.ElapsedSoFar > 2)
                {
                    dirMultiplier = -1;
                }
                RotationHelper.VelocityInThisDirection(this, RotationHelper.MyDirection(this, dirMultiplier * 60), 250);

                //For firing
                if (GM.eventM.Elapsed(tiShootCooldown))
                {
                    //create bullet and pass reference to player and angle
                    new Bullet(this, playerPos, 1000f, 10);
                }
            }
        }
Beispiel #3
0
 private void Move()
 {
     //Move towards player
     RotationHelper.FacePosition(this, GameSetup.PlayerChar.Position, DirectionAccuracy.free, 0, false);
     RotationHelper.VelocityInCurrentDirection(this, 400, 0);
 }