Puede acceder al curso completo aquí: Proyecto de estrategia en tiempo real – la recolección de recursos

Tabla de contenidos

Configuración de la cámara

El controlador de la cámara nos permitirá mover la cámara con el teclado y zoom in / out. Esto es similar a muchos otros juegos de estrategia en tiempo real y de sus sistemas de cámaras.

Antes de empezar secuencias de comandos, vamos a cambiar la cámara transformar un poco.


  • establecer la posición de 0, 20, -17
  • establecer la rotación a 50, 0, 0

    Unidad Transform componente con la posición y la rotación en círculos

    Ahora, con este objeto la cámara principal, tenemos que hacer que un niño de otro objeto. Esto hará que sea más fácil mover la cámara alrededor. En primer lugar, crear un nuevo GameObject vacío llamado Cámara .


    • Ponga la posición 0, 0, 0

      A continuación, arrastre la cámara principal en como hijo del objeto de la cámara.

      Unidad Jerarquía con la cámara principal como un objeto hijo

      CameraController escritura

      Crear un nuevo guión C # llamado CameraController y adjuntarlo a la Cámara objeto padre. Abrirlo en Visual Studio.

      Para empezar, vamos a añadir en algunas variables.
      flotación pública movespeed; flotación pública zoomSpeed; flotación pública minZoomDist; maxZoomDist flotación pública; leva de la cámara privada; 1234567publicfloatmoveSpeed; publicfloatzoomSpeed; publicfloatminZoomDist; publicfloatmaxZoomDist; privateCamera leva;

      Función de Awake, podemos obtener la la cámara y la puso a la leva variable.
      vacío Awake () {leva = Camera.main;} 1234voidAwake () {leva = Camera.main;}

      A continuación, vamos a crear el Mover y Zoom funciones, ellos llaman cada cuadro en el Actualizar función.
      vacío Update () {Mover (); Zoom ();} void Mover () {} void zoom () {} 123456789101112131415voidUpdate () {Mover (); zoom ();} voidMove () {} voidZoom () {}

      En el Mover < / strong> función, vamos a obtener primero las entradas del teclado.
      flotar XInput = Input.GetAxis ( «horizontal»); flotador zInput = Input.GetAxis ( «vertical»); 12floatxInput = Input.GetAxis ( «horizontal»); floatzInput = Input.GetAxis ( «vertical»);

      Siguiente , queremos obtener el vector de dirección para moverse en y aplicarlo a nuestra posición.
      Vector3 dir = transform.forward * zInput + transform.right * XInput; transform.position + = dir * movespeed * Time.deltaTime; 123Vector3 dir = transform.forward * zInput + transform.right * XInput; transform.position + = dir * movespeed * Time.deltaTime;.

      vamos de forma rápida a volver al editor y relleno en las propiedades

      Inspector de la Unidad con la escritura del controlador de la cámara

      De vuelta en el guión, vamos a llenar en el Función de zoom.
      flotar scrollInput = Input.GetAxis ( «ratón de rueda de desplazamiento»); flotador dist = Vector3.Distance (transform.position, cam.transform.position), si (dist 0.0f) return; else if (dist> maxZoomDist && scrollInput <0.0f) return; cam.transform.position + = cam.transform.forward * scrollInput * zoomSpeed; 123456789floatscrollInput = Input.GetAxis ( "ratón de rueda de desplazamiento"); floatdist = Vector3.Distance (transform.position, cam.transform .position), si (dist 0.0f) return; elseif (dist> maxZoomDist && scrollInput <0.0f) return; cam.transform.position + = cam.transform.forward * scrollInput * zoomSpeed;

      Finalmente, vamos a crear otra función que vamos a estar poniendo en práctica más adelante. La FocusOnPosition Función de la cámara se moverá a una posición determinada.
      FocusOnPosition pública vacío (Vector3 pos) {transform.position = pos;} 1234publicvoidFocusOnPosition (POS) Vector3 {transform.position = pos;}.

      De nuevo en el editor, se puede presionar el juego y probarlo


      • WASD o las teclas de flecha = movimiento de cámara
      • rueda de desplazamiento = zoom

        En la siguiente lección, vamos a empezar a crear los objetos de recursos.

        Transcripción

        Bienvenidos a todos de nuevo. En esta lección que vamos a estar trabajando en nuestro script controlador de la cámara, lo que nos va a permitir a ambos se mueven la cámara de izquierda a derecha, hacia adelante y hacia atrás, así como acercar y alejar. Por lo tanto, puede obtener una vista buena de nuestra escena del juego y ser capaz de navegar alrededor. La cámara es también va a tener la capacidad de concentrarse en una determinada posición, por lo que al principio del juego que vamos a centrar en nuestra área de desove unidad de manera que la cámara puede mostrar fácilmente el jugador donde nuestras unidades están desovando, y más tarde en adelante, si quieres implementar cosas tales como pulsar un botón para pasar a una unidad de inactividad, entonces esto también va a permitir eso.

        Así que, ante todo, tenemos que cambiar nuestra configuración de nuestra cámara principal en este momento. Si nos vamos a la vista de la escena aquí se verá que la cámara principal, es sólo por sí mismo, pero lo que tenemos que hacer es que tenemos que poner esto en el interior de la cámara principal de un contenedor. Y que nos va a permitir a moverse fácilmente alrededor y averiguar el punto central aquí abajo, para averiguar lo que está en el centro de la cámara, porque si no lo hacemos, tratando de centrar la cámara en un cierto punto, Tendrá que hacer un poco de trigonometría, y sí, puede ser un poco confuso, así que sólo tendremos que mantenerlo así.

        Así que lo que tenemos que hacer es, ante todo, conseguir nuestra cámara aquí, y tenemos que colocarlo dentro de un objeto vacío. Así que voy a crear un objeto nuevo juego de vacío aquí, voy a llamarlo nuestra cámara, voy conjunto a cero, cero, cero, y ahora sólo tenemos que configurar la cámara aquí, oh, este arrastre en como un niño, y tenemos que configurar la cámara principal aquí a una posición donde queremos que el centro del mapa para estar en el centro de la pantalla.

        Así que voy a establecer la posición y aquí a 20, z a -17, y la rotación sobre el eje x a 50. Así que vamos, parece que estamos más o menos objetivo en el centro hay , lo que es bueno. Campo de visión a 40, que también es bueno. Y ahora lo que podemos hacer es en nuestro objeto principal de la cámara aquí, vamos a crear un nuevo guión en el interior de la carpeta scripts, y voy a estar llamando a éste nuestro controlador de la cámara. A continuación, podemos seleccionar nuestro objeto de cámara que acabamos de crear aquí, y voy a arrastrar en el script del controlador de la cámara, y ahora vamos a abrir hasta dentro de Visual Studio para empezar a crear scripts.

        De acuerdo, aquí estamos. En primer lugar, yo sólo voy a quitar la función de arranque y actualizar sólo para obtener un poco limpia aquí cuando entramos en nuestras variables, y por primera vez para nuestras variables, es necesario conocer la velocidad de movimiento, esto va a ser lo rápido que vamos a estar en movimiento alrededor de la cámara con nuestras teclas de flecha, entonces nosotros también necesitamos saber una velocidad de zoom, lo que la rapidez vamos a estar zoom dentro y fuera, por lo que un zoom de velocidad aquí. Y luego, también tenemos que saber lo que es la distancia mínima que podemos acercar, y la distancia máxima que podemos alejar la imagen, porque no quiero ser ampliación a través del terreno o muy lejos, así que iré flotación pública minZoomDist y otro flotación pública para la maxZoomDist.

        ¿Qué más tenemos necesidad va a ser la cámara, porque cuando estamos zoom de la cámara, que vamos a estar en movimiento que en función de su dirección de avance sin embargo, cuando nos estamos moviendo la cámara, vamos a estar en movimiento este padre objeto alrededor. Así que aquí, voy a ir leva cámara privada, y hay que ir.

        Ahora lo que podemos hacer es dentro de la función despierto Voy a ir leva = camera.main a conseguir la cámara fácil de esa manera, y ahora lo que podemos hacer es crear nuestras dos funciones, la función de desplazamiento y la función de zoom. Y éstos van a ser llamados cada fotograma dentro de actualización, así que sólo voy a ir vacío mover y hacer zoom entonces vacío, y luego dentro de la función de actualización aquí vamos a estar llamando el movimiento y las funciones de zoom cada cuadro.

        Muy bien, así que vamos a comenzar con la función de movimiento. Esto va a tomar en dos entradas, que va a tomar en los ejes horizontal y vertical de teclado, que están unidos a las teclas de flecha y las teclas WASD. Horizontal es A y D o flecha izquierda y flecha derecha y vertical es W y S, o flecha hacia arriba y flecha hacia abajo. Y esto es un rango de entre uno negativo y uno, siendo cero el valor por defecto, lo que significa que nada ha sido presionado.

        Así que vamos a nuestra primera XInput, por lo float_xInput = Input.GetAxis, horizontal y luego para el zInput, que va a ser nuestro delante y hacia atrás, vamos a conseguir nuestro Input.GetAxis, vertical. Está bien, así que tenemos nuestra entrada. Ahora lo que tenemos que hacer es básicamente mover la cámara en función de éstos. Y la forma en que vamos a hacer es que con sólo mover este objeto de cámara de los padres en la dirección de avance, y la izquierda y la derecha.

        Entonces, ¿qué podemos hacer con esto es crear un Vector3 llama dir, y esto aquí va a ser igual a nuestra transform.forward multiplicado por zInput, además de nuestra transform.right multiplicado por el XInput. Así que esto va a obtener una dirección para mover eso. Si no estamos presionando nada, entonces esto es sólo va a ser un vector vacío. Entonces, ¿qué podemos hacer es añadir esta en la parte superior de nuestra posición transformar, por lo transform.position + = sentido, multiplicado por nuestra velocidad de movimiento, y entonces tenemos que multiplicarlo por Time.deltaTime, porque no quiero mover nuestro movimiento velocidad cada fotograma, que quiero mover, que cada segundo. Así Time.deltaTime convertirá esto a un segundo rango, y hacerlo de manera que sea la velocidad de fotogramas independiente, no depende de una cierta velocidad de fotogramas.

        Está bien, así que vamos a ir realmente probar esto en este momento. Voy a ir a Unity. Para nuestro controlador de la cámara aquí voy a establecer la velocidad de movimiento a 15, un zoom de velocidad a 25, min zoom dist a 10, y dist de zoom máximo de 50. Estos son sólo los valores que he encontrado que eran bastante buenas, juego de la prensa , y como se puede ver aquí, podemos usar WASD para mover la cámara alrededor nuestro como tal, y luego vamos a estar trabajando en la rueda de desplazamiento. La rueda de desplazamiento va a ser nosotros zoom dentro y fuera, así que vamos a ir a hacer eso ahora.

        Entonces, ¿qué podemos hacer zoom en que aquí es, necesitamos en primer lugar tener la aportación de desplazamiento de la rueda de desplazamiento. Y para conseguir que así podemos ir flotador scrollInput = Input.getAxis y que quiera conseguir la rueda de desplazamiento con el ratón, por lo que el ratón rueda de desplazamiento. Y al igual que con las otras entradas, esto va a ser un rango entre uno negativo para el desplazamiento hacia abajo, y otro para el desplazamiento hacia arriba. Y con esto, entonces, también es necesario para calcular la distancia entre la cámara y el punto central, entre el objeto principal, ya que la cámara se va a calcular más o menos hasta qué punto puede acercar y alejar en base a esa distancia. < / p>

        Así flotar dist = Vector3.Distance entre nosotros, por lo transform.position, este objeto padre que se encuentra actualmente en el centro de la pantalla en cero, cero, cero, y la cam.transform.position, que es en el aire. Entonces lo que tenemos que hacer es cheque, vale, si esta distancia es menor que la distancia mínima, y ​​estamos tratando de desplazarse hacia arriba, entonces no podemos hacer un zoom más. Así que volver. Así que si es inferior a dist minZoomDist y la entrada de desplazamiento es mayor que cero, y luego volver, porque ya no se puede acercar, porque ya hemos alcanzado el máximo, por lo que no se molestó en tratar de afectar el zoom más. < / p>

        De lo contrario, por lo demás, si fuera dist es mayor que la distancia de zoom máximo, y tenemos nuestra entrada tratando de desplazamiento para desplazarse hacia abajo, por lo que estamos tratando de desplazarse a cabo, a continuación, también queremos volver, porque no hacemos ¿Quieres ser capaz de alejar cuando estamos en esta distancia, tampoco. Así que, finalmente, si estamos dentro del rango de los valores mínimo y máximo de zoom, entonces podemos afectar a la posición de la cámara con sólo ir cam.transform.position + = cam.transform.forward, multiplicado por el scrollInput, multiplicado por zoomSpeed. Hay que ir.

        De acuerdo, así que conseguimos que todo listo Ahora, vamos a añadir también en la función para centrarse en una posición, que es sólo una línea de código. Así que vamos a ir FocusOnPosition public void. Se requiere una Vector3 para los puntos de venta, y todo lo que estamos haciendo aquí es sólo va a ir transform.position = pos.

        De acuerdo, así que vamos a probar nuestra función de zoom en este momento. Estamos más o menos moviéndose a lo largo dirección de avance de la cámara, que es el eje azul del eje z, local a la cámara, lo que está apuntando en la dirección que el objeto está mirando, por lo que vamos a estar en movimiento a lo largo de ese eje basado en nuestro scrollInput y, a continuación, multiplicado por nuestra zoomSpeed, por lo que puede afectar a la rapidez con el zoom es.

        Así que de vuelta en nuestra unidad en este momento, vamos a jugar de prensa y probarlo. Así que podemos moverse como antes, entonces podemos alejar la imagen con movimiento en sentido vertical, como se puede ver. Estoy en la distancia de zoom máximo, no puedo desplazarse a cabo más. Entonces, podemos hacer un zoom y estoy en el máximo de zoom en la distancia, la distancia min, lo que no puede desplazarse en cualquier más.

        Y sí, eso es, básicamente, el control de la cámara configurado y listo para ir, cuando no tenemos unidades de desove creados, cada vez que haga clic en la unidad de desove, vamos a tener el enfoque de la cámara en esa posición, y también se centrará en la que, al inicio, por lo que no tenemos que mover manualmente la cámara alrededor cuando se prueba en el juego. Ese es el script del controlador de la cámara configurado y listo para ir.

        En la siguiente lección vamos a estar trabajando en la creación de nuestro jugador, darles la capacidad de reunir los recursos y el uso de esos recursos, por lo que nos vemos todos entonces.

        interesado en continuar? Echa un vistazo a la estrategia del proyecto completo en tiempo real -. Recursos Encuentro por supuesto, que es parte de nuestra Academia de desarrollo de juegos de estrategia

        Mensajes relacionados

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *