private void CreateCamera() { Vector3[] cameraPositions = { new Vector3(0, 10, 30), new Vector3(30, 0, 0), new Vector3(0, 30, 0.01f), new Vector3(0, 100, 100), }; this.staticCameras = new BaseCamera[cameraPositions.Length]; for (int i = 0; i < staticCameras.Length; i++) { staticCameras[i] = new BaseCamera(this); staticCameras[i].Position = cameraPositions[i]; } this.thirdPersonCamera = new ThirdPersonCamera(this); camera = thirdPersonCamera; }
/// <summary> /// Allows the game to run logic such as updating the world, /// checking for collisions, gathering input, and playing audio. /// </summary> /// <param name="gameTime">Provides a snapshot of timing values.</param> protected override void Update(GameTime gameTime) { inputState.Update(); // Allows the game to exit if (InputState.IsDown(Keys.Escape) || GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed) this.Exit(); // TODO: Add your update logic here #if DEBUG && DEBUG_WINDOW { if (this.IsActive && inputState.NewMouseState.LeftButton == ButtonState.Pressed) { float x = inputState.NewMouseState.X - 320; float y = inputState.NewMouseState.Y - 240; debugWindow.SetPositionText(x, y); } } #endif BaseCamera oldCamera = camera; if (inputState.IsDown(Keys.D1)) camera = thirdPersonCamera; if (inputState.IsDown(Keys.D2)) camera = staticCameras[0]; if (inputState.IsDown(Keys.D3)) camera = staticCameras[1]; if (inputState.IsDown(Keys.D4)) camera = staticCameras[2]; if (inputState.IsDown(Keys.D5)) camera = staticCameras[3]; if (oldCamera != camera) { Components.Remove(oldCamera); Components.Add(camera); } debugDrawer.Enabled = InputState.IsDown(Keys.C); switch (state) { case State.Pause: //if (inputState.IsTrigger(Keys.Enter)) { // state = State.Play; //} state = State.Play; break; case State.Play: if (inputState.IsTrigger(Keys.Back)) { Reset(); } physicSystem.Integrate((float)gameTime.ElapsedGameTime.TotalSeconds); break; default: break; } base.Update(gameTime); }