Esempio n. 1
0
        public void moverPersonaje()
        {
            if (!flagGod)
            {
                var moveVector = new Vector3(0, 0, 0);
                var moving     = false;
                if (!escondido)
                {
                    if (Input.keyDown(Key.W))
                    {
                        moving      = true;
                        moveVector += new Vector3(1, 0, 0) * velocidadPersonaje;
                    }

                    if (Input.keyDown(Key.D))
                    {
                        moving      = true;
                        moveVector += new Vector3(0, 0, -1) * velocidadPersonaje;
                    }

                    if (Input.keyDown(Key.A))
                    {
                        moving      = true;
                        moveVector += new Vector3(0, 0, 1) * velocidadPersonaje;
                    }

                    if (Input.keyDown(Key.S))
                    {
                        moving      = true;
                        moveVector += new Vector3(-1, 0, 0) * velocidadPersonaje;
                    }
                    if (moving)
                    {
                        sound.play(false);
                    }
                }
                //Vector de movimiento
                var movementVector      = Vector3.Empty;
                var leftrightRotPrevius = leftrightRot - Input.XposRelative * RotationSpeed;
                var updownRotPrevius    = updownRot + Input.YposRelative * RotationSpeed;
                leftrightRot -= Input.XposRelative * RotationSpeed;
                personaje.rotateY(Input.XposRelative * RotationSpeed);

                //maximos para los giros del vectorDeView
                updownRot += Input.YposRelative * RotationSpeed;

                cameraRotation = Matrix.RotationY(-leftrightRot) * Matrix.RotationX(-updownRot); //calcula la rotacion del vector de view

                movementVector = Vector3.TransformNormal(moveVector, Matrix.RotationY(-leftrightRot));

                direccionLookAt = Vector3.TransformNormal(viewVector, cameraRotation); //direccion en que se mueve girada respecto la rotacion de la camara
                if (!escondido)
                {
                    var realMovement = collisionManager.moveCharacter(boundPersonaje, movementVector * ElapsedTime, objetosColisionables);
                    personaje.move(realMovement);

                    lookAt = Vector3.Add(getOffset(), direccionLookAt); //vector lookAt final

                    Camara.SetCamera(getOffset(), lookAt);
                }
                if (Input.keyPressed(Key.P))
                {
                    foreach (var puerta in puertas)
                    {
                        controlDePuerta(puerta);
                    }
                }
                this.getColisionContraObjetoCarga();
            }
            if (!flagGod)
            {
                luz.consumir(ElapsedTime);
            }
        }