Exemplo n.º 1
0
        public void UpdateShip(float dt)
        {
            KeyboardState keyboardState = Keyboard.GetState();
            GamePadState  currentState  = GamePad.GetState(PlayerIndex.One);
            MouseState    mouseState    = Mouse.GetState();

            if (keyboardState.IsKeyDown(Keys.W) || (currentState.DPad.Up == ButtonState.Pressed))
            {
                Vector3 moveNB             = WorldMatrix.Forward;
                BEPUutilities.Vector3 move = new BEPUutilities.Vector3(moveNB.X, moveNB.Y, moveNB.Z);
                move *= 2;
                //physicsObject. = new BEPUutilities.Vector3(move.X, move.Y, move.Z);
                if (physicsObject.LinearVelocity.Length() < MAX_VELOCITY)
                {
                    physicsObject.ApplyLinearImpulse(ref move);
                }
                Game.driveInstance.Play();
            }
            else if (keyboardState.IsKeyDown(Keys.S) || (currentState.DPad.Down == ButtonState.Pressed))
            {
                Vector3 moveNB             = WorldMatrix.Backward;
                BEPUutilities.Vector3 move = new BEPUutilities.Vector3(moveNB.X, moveNB.Y, moveNB.Z);
                //physicsObject. = new BEPUutilities.Vector3(move.X, move.Y, move.Z);
                if (physicsObject.LinearVelocity.Length() < MAX_VELOCITY)
                {
                    physicsObject.ApplyLinearImpulse(ref move);
                }
                Game.driveInstance.Play();
            }
            else
            {
                if (Game.driveInstance.State == Microsoft.Xna.Framework.Audio.SoundState.Playing)
                {
                    Game.driveInstance.Stop();
                }
            }

            Yaw   += (200 - mouseState.X) * dt * .12f;
            Pitch += (200 - mouseState.Y) * dt * .12f;
            Mouse.SetPosition(200, 200);

            position = new Vector3(physicsObject.Position.X, physicsObject.Position.Y, physicsObject.Position.Z);
            //Game1.Camera.updateCamera(new Vector3(physicsObject.Position.X, physicsObject.Position.Y, physicsObject.Position.Z));
            WorldMatrix  = Matrix.CreateFromAxisAngle(Vector3.Right, shipPitch) * Matrix.CreateFromAxisAngle(Vector3.Up, shipYaw);
            WorldMatrix *= Matrix.CreateTranslation(new Vector3(physicsObject.Position.X, physicsObject.Position.Y, physicsObject.Position.Z));
        }
Exemplo n.º 2
0
 public void Shoot()
 {
     if (body != null)
     {
         Vector3 impulse = rotation * speed;
         body.ApplyLinearImpulse(ref impulse);
     }
 }