示例#1
0
文件: Player.cs 项目: Thunder7102/RPG
 public void ProjectileDied(Projectile projectile)
 {
     if (projectile is SwordProjectile)
     {
         _swordProjectile = null;
     }
 }
示例#2
0
文件: Player.cs 项目: Thunder7102/RPG
        public override void Update(float dTime)
        {
            base.Update(dTime);

            float speed = Speed;

            if (_dashEndTime > Game.ElapsedTime)
            {
                speed *= DashMultiplier;
            }
            if (_spaceListener.IsPressed && _dashEndTime + DashCooldown < Game.ElapsedTime)
            {
                _dashEndTime = Game.ElapsedTime + DashTime;
            }

            if (Keyboard.IsKeyPressed(Keyboard.Key.D))
            {
                if (Game.ElapsedTime - lastDPressed < 0.15 && !isDPressed && _dashEndTime + DashCooldown < Game.ElapsedTime)
                {
                    _dashEndTime = Game.ElapsedTime + DashTime;
                }
                isDPressed   = true;
                lastDPressed = Game.ElapsedTime;
            }
            else
            {
                isDPressed = false;
            }
            if (Keyboard.IsKeyPressed(Keyboard.Key.A))
            {
                if (Game.ElapsedTime - lastAPressed < 0.15 && !isAPressed && _dashEndTime + DashCooldown < Game.ElapsedTime)
                {
                    _dashEndTime = Game.ElapsedTime + DashTime;
                }
                isAPressed   = true;
                lastAPressed = Game.ElapsedTime;
            }
            else
            {
                isAPressed = false;
            }
            if (Keyboard.IsKeyPressed(Keyboard.Key.W))
            {
                if (Game.ElapsedTime - lastWPressed < 0.15 && !isWPressed && _dashEndTime + DashCooldown < Game.ElapsedTime)
                {
                    _dashEndTime = Game.ElapsedTime + DashTime;
                }
                isWPressed   = true;
                lastWPressed = Game.ElapsedTime;
            }
            else
            {
                isWPressed = false;
            }
            if (Keyboard.IsKeyPressed(Keyboard.Key.S))
            {
                if (Game.ElapsedTime - lastSPressed < 0.15 && !isSPressed && _dashEndTime + DashCooldown < Game.ElapsedTime)
                {
                    _dashEndTime = Game.ElapsedTime + DashTime;
                }
                isSPressed   = true;
                lastSPressed = Game.ElapsedTime;
            }
            else
            {
                isSPressed = false;
            }
            Vector2 direction = GetDirection();

            direction.X *= speed * dTime;
            direction.Y *= speed * dTime;

            if (Math.Abs(direction.X) > float.Epsilon && Math.Abs(direction.Y) > float.Epsilon)
            {
                direction = direction / (float)Math.Sqrt(2);
            }

            Position = CollisionHelper.FindAccessablePoint(this, Position + direction);

            if (Mouse.IsButtonPressed(Mouse.Button.Left) && _swordProjectile == null)
            {
                _swordProjectile = new SwordProjectile(this, Position.AngleTo(Game.MousePosition), 0.2f);
                Game.Entities.Add(_swordProjectile);
            }

            if (_1ButtonListener.IsPressed)
            {
                FireballProjectile projectile = new FireballProjectile(this, (Game.MousePosition - Position).Normalize() * 75);
                Game.Entities.Add(projectile);
            }
        }