public override void CheckMovement(GameTime gameTime) { RecastPositions(); if (NPCCollision.IsLeftFromNPC(HeroPlayer.Positie, positie)) { player.Direction = true; velocity.X = -1; } else if (NPCCollision.IsRightFromNPC(HeroPlayer.Positie, positie)) { player.Direction = false; velocity.X = 1; } else { velocity.X = 0; } if (NPCCollision.IsAboveNPC(HeroPlayer.Positie, positie) && !hasJumped) { //Jump effects.PlayJump(); velocity.Y = -jumpHeight; hasJumped = true; isGround = false; } else { //effects.StopJump(); } player.IsAttacking = false; if (NPCCollision.IsTouchingNPC(HeroPlayer.Rectangle, player.Rectangle)) { player.IsAttacking = true; player.Attack.NPCAttack(HeroPlayer as IPlayerObject, player, gameTime, effects); } CheckCollide(4, 5); CheckGravity(); player.Update(gameTime); }
public void NPCAttack(IPlayerObject enemy, AEnemyObject player, GameTime gametime, IEffectMusic effect) { SetTimer(gametime); if (NPCCollision.IsTouchingNPC(player.Rectangle, enemy.Rectangle)) { if (gametime.TotalGameTime.TotalSeconds - timer > 0.7) { effect.PlayAttack(); isSetTimer = false; enemy.Hearts -= player.AttackDamage; if (!enemy.IsHit) { enemy.IsHit = true; effect.PlayHit(); } } } }
public void Attack(List <AEnemyObject> enemys, IPlayerObject player, GameTime gametime, IEffectMusic effect) { SetTimer(gametime); foreach (var enemy in enemys) { if (NPCCollision.IsTouchingNPC(player.Rectangle, enemy.Rectangle)) { if (gametime.TotalGameTime.TotalSeconds - timer > 0.5) { isSetTimer = false; enemy.Hearts -= player.AttackDamage; if (!enemy.IsHit) { effect.PlayHit(); enemy.IsHit = true; } } } } }