Puede acceder al curso completo aquí: Proyecto de estrategia en tiempo real – Movimiento de Unidad

Tabla de contenidos

Múltiples Unidades

Para empezar, vamos a duplicar la unidad un par de veces y se mueven a su alrededor. A continuación, seleccione el Reproductor y arrastre la unidad objetos en los Unidades lista.

La unidad con unidades añaden a componente de secuencia de la unidad

Seleccionar buzón de interfaz de usuario

En el cuadro de seleccionar, crear un nuevo lienzo de interfaz de usuario. Como un niño de eso, crear un nuevo objeto de imagen.

La unidad de interfaz de usuario de la lona con imagen en bruto añadió

Seleccione la imagen y establecer el color a 255, 255, 255, 128 .


  • Cambiar el nombre de la imagen a SelectionBox

    Inspector de la Unidad con selector de color de la imagen abierta

    Por último, con el fin de configurar la imagen para trabajar fácilmente con las coordenadas del ratón, ajuste el anclaje a Parte inferior – izquierda . entonces podemos desactivar el objeto por defecto.

    Inspector Unidad con la caja del ancla en círculos

    UnitSelection escritura

    UnitSelection guión, vamos a crear una nueva variable para el objeto de selección y la posición de inicio del ratón.
    pública RectTransform selectionBox; Vector2 privada PosInicial; 12publicRectTransform selectionBox; privateVector2 PosInicial;

    En el Actualizar función, vamos a establecer la variable de posición de inicio en el ratón hacia abajo sentencia if .
    PosInicial = Input.mousePosition; 1startPos = Input.mousePosition;.

    A continuación, vamos a ver para cuando el botón del ratón se mantiene presionado y liberado
    // ratón upif (Input.GetMouseButtonUp (0)) {} // ratón celebrada downif (Input.GetMouseButton (0)) {UpdateSelectionBox (Input.mousePosition);} 1234567891011 // ratón upif (Input.GetMouseButtonUp (0)) { } // ratón celebrada downif (Input.GetMouseButton (0)) {UpdateSelectionBox (Input.mousePosition);}

    la UpdateSelectionBox función se actualizará el cuadro de selección en pantalla .
    // llama cuando estamos creando una selección boxvoid UpdateSelectionBox (Vector2 curMousePos) {if selectionBox.gameObject.SetActive (verdadero) (selectionBox.gameObject.activeInHierarchy!); flotador width = curMousePos.x – startPos.x; flotar height = curMousePos.y – startPos.y; selectionBox.sizeDelta = new Vector2 (Mathf.Abs (ancho), Mathf.Abs (altura)); selectionBox.anchoredPosition = PosInicial + nuevo Vector2 (anchura / 2, altura / 2); (! selectionBox.gameObject.activeInHierarchy)} 123456789101112 // llama cuando estamos creando una selección boxvoidUpdateSelectionBox (Vector2 curMousePos) {if selectionBox.gameObject.SetActive ( true); floatwidth = curMousePos.x-startPos.x; floatheight = curMousePos.y-startPos.y; selectionBox.sizeDelta = newVector2 (Mathf.Abs (ancho), Mathf.Abs (altura)); selectionBox.anchoredPosition = PosInicial + newVector2 (anchura / 2, altura / 2);}

    de nuevo en el editor, asegúrese de que la casilla de selección es referencias en el UnitSelection componente, juego de la prensa luego de probarlo

    UnitSelection escritura

    De vuelta en el script de UnitSelection, vamos a llenar en el ratón hacia arriba si la declaración en el Actualizar función.
    // ratón upif (Input.GetMouseButtonUp (0)) {ReleaseSelectionBox ();} 12345 // ratón upif (Input.GetMouseButtonUp (0)) {ReleaseSelectionBox ();}

    La ReleaseSelectionBox función inhabilitará la imagen de selección y seleccionar todas las unidades que se encuentran dentro de la misma.
    // llamada cuando nos liberamos la selección boxvoid ReleaseSelectionBox () {selectionBox.gameObject.SetActive (false); Vector2 min = selectionBox.anchoredPosition – (selectionBox.sizeDelta / 2); Vector2 max = selectionBox.anchoredPosition + (selectionBox.sizeDelta / 2); foreach (unidad Unidad en player.units) {Vector3 screenPos = cam.WorldToScreenPoint (unit.transform.position); si (screenPos.x> min.x && screenPos.x min.y && screenPos.y min.x && screenPos.x min. y && screenPos.y de nuevo en el editor, ahora podemos seleccionar varias unidades

    Transcripción

    Bienvenidos a todos de nuevo. En esta lección, nos va a ser de continuar con la selección de nuestras unidades. En la lección anterior, lo ponemos por lo que hasta que podemos hacer clic sobre una unidad para seleccionarla y haga clic fuera de ella para anular su selección. Ahora en esta lección, que vamos a estar trabajando en unidades de selección de grupo, por lo que a continuación, hacer clic y arrastrar para seleccionar una amplia gama de unidades de aquí.

    Y como cuestión de hecho, vamos a empezar en realidad mediante la duplicación de esta unidad un par de veces. Así que sólo voy Control + D, que se mueva de aquí, Control + D, que se mueva por allí, Control + D, que se mueva por allí. Así que ahora tenemos un grupo de unidades y ya que tenemos varias unidades ahora, tenemos que seleccionar nuestro objeto jugador y añadirlos a nuestras unidades de enumerar aquí. Así que sólo voy a arrastrar y soltarlos en esta matriz aquí porque todas las unidades que quieren control o se reconocen como el nuestro, necesidad de estar dentro de esta lista de reproducción aquí. Así como antes, podemos hacer clic en el juego, podemos seleccionar las unidades, como se puede ver aquí, estoy seleccionando estas diferentes unidades, pero sólo podemos seleccionar uno a la vez.

    Así que lo que vamos a estar haciendo ahora ser la creación de esa caja seleccione para que podamos seleccionar, por ejemplo, todos ellos al mismo tiempo y luego controlarlos. Ahora para comenzar con esto, lo que vamos a estar haciendo es la creación de una interfaz de usuario que en realidad tienen esta plaza que va a ser el cuadro de selección rect y lo que voy a hacer es ir botón derecho del ratón, voy a ir a la interfaz de usuario , lienzo, para crear un nuevo lienzo de interfaz de usuario aquí en el editor y como hijo de ese lienzo, voy a crear una imagen de la interfaz de usuario.

    Ahora, para tener una mejor vista de esta imagen, vamos a entrar en el modo 2D aquí. Haga clic en el botón 2D, pulse F para centrarse en la imagen, y hay que ir. Si nos fijamos en la vista de juego, podemos ver que tenemos la imagen de la derecha aquí en la pantalla. Pero no queremos que como esto porque en este momento, esta imagen es prácticamente todo blanco, por lo que si hacemos vuelo estacionario por encima en la parte superior de, y vamos a hacerlo un poco más grande.

    Si hacemos Pase el ratón sobre una unidad, no podemos ver realmente lo que estamos viendo, por lo que tenemos que hacer esta ligeramente translúcido. Así que por el color aquí, voy a establecer este a unos 255 dividido por dos, por lo que alrededor de 128, eso es lo que vamos a tener. Así podemos ver la unidad y todavía podemos ver lo que está seleccionando. Vamos a cambiar el nombre de esto aquí en nuestro SelectionBox.

    Y lo que también queremos hacer entonces es cambiar algunas cosas aquí en el rect transformar. En este momento, el anclaje real se establece en el centro de la pantalla. Así cero, cero es en el centro de la pantalla y si se mira aquí en la posición X y la posición Y, estos valores cambiarán en función de dónde me muevo esto. Si lo muevo a la izquierda, verá que entra en negativo y si lo muevo a la derecha, verá que va en positivo. Lo mismo con el Y, vertical, de que entre en el positivo y hacia abajo, entra en el negativo.

    Ahora no queremos que de esta manera, porque la forma en que vamos a ser su puesta en marcha con nuestro cursor del ratón y todo eso, la forma en que funciona posición de la pantalla, que es lo que nuestros trabajos cursor del ratón en, es diferente que esto. Cero, cero no es el centro de la pantalla, en realidad es la parte inferior izquierda de la pantalla. Así que tenemos que cambiar esto para que cero, cero para este cuadro de selección aquí es en realidad en la esquina inferior izquierda de la pantalla y para hacer eso, sólo podemos cambiar el anclaje.

    Así que vamos a Haga clic en la casilla de anclaje aquí y voy a establecer esta aquí para abajo a la izquierda. Así que ahora, como se puede ver, cero, cero es aquí abajo, en la parte inferior izquierda, que es lo que queremos, que es grande. Está bien, así que sólo voy a mover este nuevo aquí. Voy a desactivar lo que no es visible por defecto y ahora vamos a ir dentro de nuestro script de selección de unidad y voy a empezar por la adición de una nueva variable. Este va a ser nuestro objeto RectTransform público que va a ser nuestro selectionBox.

    Y también tenemos algunas otras variables. En primer lugar, necesitamos la posición de inicio para nuestra clic. Así que cuando inicialmente clic abajo en la pantalla, tenemos que averiguar lo que la posición es tan entonces podemos averiguar qué tan grande, el ancho hacemos la caja. Así que voy a tener un vector2 privada para salir PosInicial y hay que ir, eso es todo lo que necesitamos por ahora.

    Así que aquí abajo, en la función de actualización, que van a estar en la adición de dos más si las declaraciones. En este momento, tenemos que si el ratón está presionado, entonces tenemos que averiguar cuando el ratón se ha terminado, por lo que podemos seleccionar las unidades que se encuentran dentro de la caja. Y también necesitamos saber cada fotograma de que el ratón se hace clic abajo, de manera que entonces podemos actualizar esta caja de selección. Así que aquí, voy a ir para ratón hacia arriba, esto se hace yendo si (Input.GetMouseButtonUp (0)) para el botón izquierdo del ratón, y para el ratón pulsado, esto va a ser (Input.GetMouseButton (0)) para el botón izquierdo del ratón.

    De acuerdo, así que cuando hacemos clic en el botón del ratón, queremos en primer lugar, establecer la posición de inicio. Así que aquí, podemos ir PosInicial es igual Input.mousePosition, por lo que estamos consiguiendo la primera posición del ratón en la pantalla cuando se hace clic abajo. Y cada vez que el ratón se mantiene presionado, lo que queremos hacer es actualizar el cuadro de selección. Por lo que queremos hacer, básicamente, el cuadro de selección, cambiar su anchura, su altura, su posición a básicamente parecer que estamos arrastrando un cuadro al otro lado.

    Así que aquí abajo, voy a crear una nueva función llamada nula actualización del cuadro de selección y esto va a enviar a través de un vector2 para la posición actual del ratón. Así que aquí, en el caso de abajo GetMouseButton, voy a llamar a la UpdateSelectionBox, enviando el Input.mousePosition. De acuerdo, entonces aquí en UpdateSelectionBox, esta función aquí va a ser llamado cuando estamos creando un cuadro de selección y lo que queremos hacer es, básicamente, active la casilla de selección por lo que si esta caja de selección está desactivada, queremos activarlo. < / p>

    Así que podemos ir si (! SelectionBox.gameObject.activeInHierarchy). Así que si esto no está activo actualmente en la jerarquía, entonces queremos activarlo. Así selectionBox.gameObject.SetActive (verdadero). Bien, ahora lo que queremos averiguar es la anchura y la altura de la caja. ¿Cuál es el ancho que va a ser y lo que es la altura va a ser? El ancho es va a ser la distancia entre la posición de inicio del ratón y la posición actual del ratón en el eje x y la altura va a ser la distancia entre los dos, pero en el eje y.

    Así que aquí, podemos ir flotador para el ancho, esto va a ser igual a nuestra curMousePos.x, restando startPos.x. Y la altura va a ser igual a la curMousePos.y menos el startPos.y. Bien, ahora lo que queremos hacer es configurar el tamaño del cuadro de selección y luego seleccione también la posición de la caja. Así que por primera vez, el tamaño de la caja va a ser básicamente, la anchura y la altura aquí. Entonces, ¿qué podemos hacer es ir selectionBox.sizeDelta a editar el ancho y la altura de la caja. Esto va a ser igual a un nuevo Vector2 y para la anchura, esto va a ser la anchura y la altura.

    Ahora, un problema de este momento es que la anchura y la altura aquí tienen una posibilidad de estar en el negativo. Si nuestra posición de inicio es, digamos cero, o Digamos que la posición de inicio está en algún lugar y nos movemos nuestro ratón hacia la izquierda, este número aquí va a entrar en una negativa, por lo que queremos que esto sea positivo y una manera de hacerlo es decir al hacer una absoluta.

    Así que con un ancho de aquí, podemos hacer de esto una Mathf.Abs para absoluta y luego entrar en el ancho. Así que si este número es negativo, va simplemente que sea un número positivo. Lo mismo para la altura aquí, podemos ir Matf.Abs, como tal.

    Bien, ahora lo que queremos hacer es establecer la posición de la caja porque esto es también va a cambiar a medida que aumenta, disminuye, y modificar el tamaño de la selección rect. Así que para cambiar la posición, podemos ir iguales selectionBox.anchoredPosition, y esto va a ser nuestra posición de inicio más la mitad de la anchura y la mitad de la altura, porque si volver al editor y haga clic en nuestro cuadro de selección aquí , se verá que el punto de giro, el punto central, se encuentra en el centro de la caja. Así que esta es la mitad del ancho de la caja después de la izquierda y también es la mitad de la altura de la caja de distancia de la parte inferior izquierda aquí también. Así que tenemos que añadir que la diferencia en la posición de arranque inicial.

    Así que sólo podemos ir aquí, es igual PosInicial además de los nuevos Vector2, ancho dividido por dos y la altura dividido por dos. Bien, tenemos todo esto creó aquí, ahora a realmente ir y probar esta adentro hacia afuera del editor. Creo que todo lo que aquí debe ser bastante bueno. Así Volvamos dentro del editor, vamos a deshabilitar esta caja de selección derecha aquí y en nuestro reproductor, arrastre nos dejó en el cuadro de selección, rect transforman, en la secuencia de comandos de selección de unidad, juego de la prensa, y debemos ver que podemos hacer clic y arrastrar y como se puede ver aquí, es igual que como se puede ver en su ordenador o en otros juegos de estrategia en tiempo real también. Podemos clic + arrastrar, soltar en realidad no cambia nada en este momento, tenemos que poner en práctica que sigue. Sin embargo, también puede hacer clic + arrastrar aquí.

    Y sí, así que esto es lo básico para hacer llegar este trabajo. Ahora todo lo que hay que hacer es hacerlo de modo que cuando nos liberamos, esto desaparece y todas las unidades que se encuentran dentro de este cuadro de selección, ser seleccionado. Así que vamos a estar trabajando en eso en la siguiente lección y yo vemos todo, entonces.

    Bienvenidos a todos de nuevo. En esta lección vamos a ser continuar con nuestra selección del cuadro. En la lección anterior establecimos que por lo que hasta ese momento, podemos hacer clic y arrastrar para visualizar el cuadro. Dejar ir no hace nada y no seleccionar las unidades, sin embargo, que es lo que vamos a estar trabajando en esta lección. Así que vamos a abrir nuestra secuencia de comandos de selección de unidad aquí. Estábamos trabajando en la función UpdateSelectionBox.

    Y lo que queremos hacer ahora es ir a nuestra función Update y en el interior de aquí vamos a estar trabajando en la sentencia if GetMouseButtonUp aquí. Así que cuando nos desprendemos de nuestro botón del ratón lo que queremos hacer es llamar a una función que vamos a crear aquí abajo. Y esto va a ser llamado nuestra ReleaseSelectionBox vacío. Por lo que podemos llamar aquí en GetMouseButtonUp, ReleaseSelectionBox y esto va en primer lugar desactivar visual derecho de la selección aquí y también va a determinar qué unidades están en el interior de la caja.

    Así que, ante todo, vamos a desactivar la caja. Así selectionBox.setactive falsa, gritos, falsa selectionBox.gameObject.setActive. Y lo que queremos hacer ahora es determinar los valores mínimo y máximo para este objeto. Queremos saber los límites de este, los límites de este cuadro de selección, básicamente, en la pantalla. Y vamos a almacenar esto en dos variables vector2. En primer lugar tenemos un Vector2 para el min. Y esto va a ser el mínimo para la X y la Y. ¿Cuál es el valor mínimo de x? Entonces, ¿cuál es el lado x valor de la mano izquierda? Y ¿cuál es el mínimo y el valor? Entonces, ¿cuál es la parte inferior izquierda de valor y?

    Así que esta posición aquí es básicamente va a ser la parte inferior izquierda de la caja de selección y esto va a ser igual a nuestra selectionBox.anchorPosition. Y puesto que esto aquí es el centro del rectángulo, tenemos que restar el ancho y la altura de la división por dos. Así restar selectionBox.sizeDelta dividir por dos. Y luego también tenemos nuestro vector2 para el máximo, que va a ser la posición superior de la caja de la izquierda. Y esto va a ser igual a nuestra selectionBox.anchorPosition, por lo que el centro del cuadro de selección. Y entonces tenemos que añadir en la parte superior de la que la anchura y la altura dividido por dos para obtener la parte superior izquierda. Por lo tanto, más selectionBox.sizeDelta dividir por dos.

    Está bien así que conseguimos los valores mínimo y máximo de las posiciones de esta caja. Y con ellas lo que vamos a estar haciendo es un bucle a través de cada una de nuestras unidades y la conversión de su posición mundial en una posición de la pantalla, y luego determinar si están o no dentro de los límites de estos dos valores. Así bucle nos dejó a través de cada una de las unidades. Así que nos dio foreach, unidad de la unidad de player.units, por lo que cada una de nuestras unidades de jugador aquí. Lo que queremos hacer en primer lugar es convertir esta unidad aquí, que tiene una posición mundial, una posición mundo global en una posición de la pantalla. Así que aquí vamos a tener una screenPos vector3 y que va a ser igual a nuestra camera.WorldToScreenPoint y esto puede convertir un punto mundo en un punto de la pantalla. El punto de mundo que queremos convertir va a ser nuestra unit.transform.position.

    Así que ahora tenemos la unidad como una posición de la pantalla y lo que queremos hacer es determinar de ese bien, es la posición x de esta unidad mayor que el min x y es la posición x menor que la x máx. Por lo tanto, a continuación, sabemos que esta unidad es verticalmente dentro de la caja de selección. Entonces tenemos que ir bien, es la pantalla y la posición de esta unidad mayor que el mínimo y y es que menos de la y max. Y con estas cuatro cheques entonces podemos determinar que bien, esta unidad está en el interior de la caja de selección, por lo que seleccionarlo, de lo contrario sólo saltar sobre ella.

    Así que para hacer esto sólo podemos ir si nuestro screenPos.x es mayor que el min.x y la screenPos.x es menor que max.x y la screenPos.y es mayor que min.y y la screenPos.y es menor que el max.y, a continuación, lo que podemos hacer es ir a la unidad selectedUnits.add como tal. Está bien, así que conseguimos nuestra unidad seleccionada aquí y luego podemos después de alternar la selección visual de la unidad. Así que ir unit.ToggleSelectionVisual cierto.

    Está bien, ahí vamos. Es probablemente un poco para obtener una bodega de esta función en el interior, ya que es bastante grande. Sólo va a añadir un comentario aquí explicando lo que hace. Así que prácticamente estamos desactivando la casilla de selección, porque ya no queremos ver. Estamos obteniendo los valores mínimo y máximo de las posiciones de este cuadro de selección, por lo que la parte inferior izquierda y la derecha las primeras posiciones de la caja. Entonces estamos recorriendo cada una de nuestras unidades. Estamos convirtiendo nuestra posición de unidad a una posición de la pantalla y luego básicamente estamos determinando aquí, en esta sentencia if si esta posición de la pantalla de la unidad está dentro de nuestra caja de selección. Si es así entonces estamos seleccionando esa unidad.

    Está bien, así que tenemos que todo listo y más o menos por el momento que debería ser todo lo que tenemos que hacer. Ahora podemos volver atrás dentro del editor, esperar a que las secuencias de comandos para compilar. Podemos entonces presiona el juego. Y lo que debemos ser capaces de hacer es igual que antes, como se puede ver, podemos seleccionar las unidades individuales, pero si tenemos nuestra caja y dejar que desaparece. Vamos a seleccionar esta unidad aquí. No nos vamos, tenemos que el seleccionado.

    try de Let seleccionar todos ellos. Aquí vamos. También podemos seleccionar todas las unidades, podemos seleccionar estos dos aquí. Podemos seleccionar estos tres. Podemos seleccionar todos ellos, podemos seleccionar uno, podemos seleccionar éste, seleccionar todos ellos. Así que sí como se puede ver aquí, tenemos nuestro sistema de selección hacia arriba y listo para funcionar. Ahora lo que tenemos que hacer es realmente consiguen estas unidades móviles. Tenemos que ser capaces de hacer clic derecho sobre el suelo y básicamente decirle a las unidades para mover a esa posición.

    Y que va a hacer en la siguiente lección donde empezamos a trabajar en nuestro script comandante de la unidad. Así que voy a ver a todos ustedes a continuación, en la siguiente lección.

    interesado en continuar? Echa un vistazo a la estrategia del proyecto completo en tiempo real -. Movimiento Unidad curso, 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 *