public override void OnStart()
    {
        base.OnStart();
        AcceleratingProjectile p = Resources.Load <GameObject>("Projectiles/" + projectileName).GetComponent <AcceleratingProjectile>();

        if (p == null)
        {
            accelerating = true;
            accelerate   = p.acceleration.y;
        }
        else
        {
            accelerating = false;
            accelerate   = 0;
        }
    }
Exemple #2
0
        public override void MovementSkill()
        {
            if (MovementSkillRemainingCooldown > 0)
            {
                return;
            }

            Vector2 direction = GetHeroToMouseDirection();
            AcceleratingProjectile projectile = new AcceleratingProjectile(CurrentMap);

            projectile.Initialize();
            projectile.Load();
            projectile.Center = new Point(Center.X + (int)(direction.X * 40), Center.Y + (int)(direction.Y * 40));
            projectile.Speed  = direction * projectile.StartingSpeed;
            CurrentMap.AddEntity(projectile);

            const int force             = 700;
            Vector2   newSpeed          = Vector2.Zero;
            bool      needToChangeSpeed = false;

            if (Speed.X > 0 && -direction.X * force > Speed.X || Speed.X < 0 && -direction.X * force < Speed.X || Speed.X * -direction.X <= 0)
            {
                newSpeed          = new Vector2(-direction.X * force, Speed.Y);
                needToChangeSpeed = true;
            }
            if (Speed.Y > 0 && -direction.Y * force > Speed.Y || Speed.Y < 0 && -direction.Y * force < Speed.Y || Speed.Y * -direction.Y <= 0)
            {
                newSpeed          = new Vector2(newSpeed.X, -direction.Y * force);
                needToChangeSpeed = true;
            }
            if (needToChangeSpeed)
            {
                Speed = new Vector2(newSpeed.X, Speed.Y);
                ChangeSpeedSmoothly(newSpeed, 4);
            }

            const int
                shakePower    = 5,
                flickCount    = 2,
                flickDuration = 3;

            CurrentMap.MapCamera.GenerateShake(shakePower, flickCount, flickDuration);

            MovementSkillRemainingCooldown = MovementSkillCooldown;
        }