public override void Update() { float speed = 5; kinetics.velocity.X = ControllerInput.Instance().Sticks.Right.X *speed; kinetics.velocity.Y = -ControllerInput.Instance().Sticks.Right.Y *speed; if (ControllerInput.Instance().GetKey(Keys.Left).Held) { kinetics.velocity.X = -speed; } if (ControllerInput.Instance().GetKey(Keys.Right).Held) { kinetics.velocity.X = speed; } if (ControllerInput.Instance().GetKey(Keys.Down).Held) { kinetics.velocity.Y = speed; } if (ControllerInput.Instance().GetKey(Keys.Up).Held) { kinetics.velocity.Y = -speed; } Attack(); LevelBoundingBox(); kinetics.Update(); if (Melee) { if (currentAnimation.Finished()) { currentAnimation = walk; currentAnimation.Reset(); Melee = false; } } if (Magic) { if (currentAnimation.Finished()) { currentAnimation = walk; currentAnimation.Reset(); Magic = false; } } currentAnimation.Update(kinetics); if (Vector2.Distance(kinetics.position, Avatar.Instance().kinetics.position) < 50) { Avatar.Instance().health.grow(.05f); } }
public override void Attack() { if (waitTimer >= 0) { if (waitTimer <= 0) { if (this.AttackType == AttackType.Ranged) { thought = new SearchAndDestroy(this, Avatar.Instance(), 500, 150); } else { thought = new SearchAndDestroy(this, Avatar.Instance(), 500, 50); } } waitTimer--; return; } attackTimer++; kinetics.velocity = Vector2.Zero; kinetics.orientations.SetOrientation(Movement.Orientate(kinetics, Avatar.Instance().kinetics, 60)); if (attackTimer > 20) { if (this.AttackType == AttackType.Melee) { current = attack; if (current.Finished()) { DamageBox damageBox = new DamageBox(kinetics.position + kinetics.orientations.GetVecOrientation() * 3, kinetics.orientations.GetVecOrientation(), kinetics.orientations.GetVecOrientation(), 30, false); LevelManager.Instance().getCurrentLevel().InsertGameObject(damageBox); SoundManager.Instance().AddSound(new SFX("SFX\\swing")); attackTimer = 0; current.Reset(); current = walk; waitTimer = 20; } } if (this.AttackType == AttackType.Ranged) { FireBall damageBox = new FireBall(kinetics.position + kinetics.orientations.GetVecOrientation() * 3, kinetics.orientations.GetVecOrientation() * 10, 30, false); LevelManager.Instance().getCurrentLevel().InsertGameObject(damageBox); SoundManager.Instance().AddSound(new SFX("SFX\\fireball")); attackTimer = 0; if (current.Finished()) { current.Reset(); current = walk; waitTimer = 20; } } } }
public override void Update() { float speed = 5; hurtTimer.Update(); if (hurtTimer.Ready()) { color = Color.White; hurtTimer.Reset(); hurtTimer.Puase(); } kinetics.velocity.X = ControllerInput.Instance().Sticks.Left.X *speed; kinetics.velocity.Y = -ControllerInput.Instance().Sticks.Left.Y *speed; if (ControllerInput.Instance().GetKey(Keys.Left).Held) { kinetics.velocity.X = -speed; } if (ControllerInput.Instance().GetKey(Keys.Right).Held) { kinetics.velocity.X = speed; } if (ControllerInput.Instance().GetKey(Keys.Down).Held) { kinetics.velocity.Y = speed; } if (ControllerInput.Instance().GetKey(Keys.Up).Held) { kinetics.velocity.Y = -speed; } Attack(); LevelBoundingBox(); kinetics.Update(); if (Melee) { if (currentAnimation.Finished()) { currentAnimation = walk; currentAnimation.Reset(); Melee = false; } } if (Magic) { if (currentAnimation.Finished()) { currentAnimation = walk; currentAnimation.Reset(); Magic = false; } } currentAnimation.Update(kinetics); }