public override void CheckRange(Player player, GameTime gameTime) { if (Game1.CurrentTime - LastHug > CoolDownRate && State == YetiStates.Standing) { if (DistanceXCenter(player) < AGGRO_RANGE) { State = YetiStates.Chasing; Destination = player.Position; Player = player; } } }
public override void CollisionCheck(Player Player, GameTime gameTime) { // If hugged recently, return. if (Game1.CurrentTime - LastHug < CoolDownRate) return; // Collision Check if (State != YetiStates.Hugging) { if (Hitbox.Intersects(Player.Hitbox) && (Player.State == Planet4.Player.PlayerStates.Standing || Player.State == Planet4.Player.PlayerStates.Walking || Player.State == Planet4.Player.PlayerStates.Shooting)) { State = YetiStates.Hugging; LastHug = Game1.CurrentTime; Velocity = Vector2.Zero; Game1.EventMan.Notify(Events.PlayerHugged, this); } } }
public override void Update(GameTime gameTime) { float timeDelta = (float)gameTime.ElapsedGameTime.TotalSeconds; DrawSomethingOnTop = false; if (State == YetiStates.Chasing) { double angle = Math.Atan2(Player.Position.Y - Position.Y, Player.Position.X - Position.X); Velocity.X = (float)Math.Cos(angle) * YETI_SPEED; } if (State == YetiStates.Hugging) { DrawSomethingOnTop = true; if (Game1.CurrentTime - LastHug > CoolDownRate) { State = YetiStates.Standing; LastHug = Game1.CurrentTime; Game1.EventMan.Notify(Events.PlayerHugRelease, this); } } UpdateMovement(gameTime); }