public void Update(GameTime gameTime, Map map) { var tiles = map.CloseTiles(Image.Position); if (InputManager.Instance.KeyDown(Keys.W, Keys.Up) && !tiles.Any(x => x.CollisionBox.Any(y => y.Contains(new Point((int)Math.Round(Image.Position.X), (int)Math.Round(Image.Position.Y) - (int)Math.Round((Speed + CharacterWidth))))))) Image.Position.Y -= Speed; if (InputManager.Instance.KeyDown(Keys.S, Keys.Down) && !tiles.Any(x => x.CollisionBox.Any(y => y.Contains(new Point((int)Math.Round(Image.Position.X), (int)Math.Round(Image.Position.Y) + (int)Math.Round((Speed + CharacterWidth))))))) Image.Position.Y += Speed; if (InputManager.Instance.KeyDown(Keys.A, Keys.Left) && !tiles.Any(x => x.CollisionBox.Any(y => y.Contains(new Point((int)Math.Round(Image.Position.X) - (int)Math.Round((Speed + CharacterWidth)), (int)Math.Round(Image.Position.Y)))))) Image.Position.X -= Speed; if (InputManager.Instance.KeyDown(Keys.D, Keys.Right) && !tiles.Any(x => x.CollisionBox.Any(y => y.Contains(new Point((int)Math.Round(Image.Position.X) + (int)Math.Round((Speed + CharacterWidth)), (int)Math.Round(Image.Position.Y)))))) Image.Position.X += Speed; CheckDoors(map); var v = ScreenManager.Instance.GraphicsDevice.Viewport; var direction = new Vector2(v.Width/2f, v.Height/2f) - InputManager.Instance.GetMousePostion(); Image.Rotation = (float)(Math.Atan2(direction.Y, direction.X)); ScreenManager.Instance.Camera.CenterOn(Image); }
private void CheckDoors(Map map) { foreach (var door in map.Doors) { var res = door.DoorImage.CollidesWith(Image); if (res.IsSuccessful) { door.Push(Image, .05f, res.SpotB); return; } } }
public override void LoadContent() { base.LoadContent(); Image.LoadContent(); Map = new Map(); Map.LoadContent("TestLevel"); Player = new Player(); Player.LoadContent(); Player.Image.Position = new Vector2(200, 200); }