Visto 1.310 veces.

AS3 – Tutorial – Como crear un sistema de seleccion de unidades tipico de juegos de estrategia en flash as3

Tutorial: Sistema de selección de unidades Año: 2012 V.: AS3
Tutorial de seleccion de unidades para juegos de estrategia en flash [e]

How to create a typical unit selection strategy games in flash as3

Para los que estén pensando en crear un juego de estrategia, aquí les dejo a modo de referencia unos ejemplos y una pequeña explicación de cómo crear un sistema de selección de unidades.

En un juego de estrategia, el sistema de selección de unidades permite, seleccionar una o varias unidades para realizar diferentes acciones, por ejemplo, ordenar que se dirijan a una posición, que ataquen, se agrupen o se pongan en formación.

En esto ejemplos no se pretende explicar en detalle todas las acciones derivadas de la selección, únicamente se explica de manera escueta el concepto de selección básico con propósito de que sirva como referencia.

(Las descargas de los ejemplos al final del post)

En el primer ejemplo se muestra como crear el típico rectángulo de selección básico mediante el método drawRect del paquete graphics.

Ejemplo 1:

This movie requires Flash Player 9

Código ejemplo 1:

En este segundo ejemplo se le implementa al ejemplo anterior la función encargada de comprobar que unidades han sido seleccionadas. En primer lugar agregamos al displayList varias instancias de la clase Char de la biblioteca y las almacenamos en un array para poder tener acceso a ellas posteriormente. En segundo lugar comprobamos la polaridad de los ejes X e Y del rectángulo en el momento de soltar el ratón. En tercer lugar se comprueba basándonos en la polaridad anterior si las unidades de la escena se encuentran dentro del área del rectángulo. En cuarto lugar se seleccionan las unidades que se encuentren dentro del área. Para destacar las unidades seleccionadas del resto, la selección consiste a modo de ejemplo en pasar cada unidad (instancia Char) del fotograma uno al dos, donde existe una imagen igual que en el fotograma uno pero pintada de rojo.

Comportamiento: Si se hace clic en el escenario se deseleccionan las unidades seleccionadas, si existen unidades seleccionadas y se realiza una nueva selección se deseleccionan las unidades anteriormente seleccionadas.

Ejemplo 2:

This movie requires Flash Player 9

Código ejemplo 2:

En el tercer ejemplo se extrae el funcionamiento del selector dentro de una clase llamada SelectorUnit, y se implementa la opción de seleccionar las unidades individualmente al hacer clic encima de ellas sin necesidad de arrastrar el selector. También se crea la clase Char para dotarla de movimiento y poder desplazarse a la posición indicada con el ratón.

Ejemplo 3:
Selecciona una unidad haciendo clic encima o varias unidades arrastrando el ratón, una vez seleccionadas haz clic en algún punto del mapa para que se desplacen hasta el. Para deseleccionar las unidades seleccionadas arrastra el selector en alguna zona donde no existan unidades.

This movie requires Flash Player 9

Código ejemplo 3:

Descargar ejemplos selector juegos estrategia (CS5) - - Descargado (415) veces.

4 comments on “AS3 – Tutorial – Como crear un sistema de seleccion de unidades tipico de juegos de estrategia en flash as3

  • Hola Javier, he leido practicamente casi toda tu pagina referido a AS3 y quisiera que me ayudes en un tema.

    new Tween(addChild (nuevomisil), “x”, None.easeInOut, centro.x, mouseX, 1, true);
    new Tween(addChild (nuevomisil), “y”, None.easeInOut, centro.y, mouseY, 1, true);

    Con lo que puse hago que nuevomisil salga de centro y llegue a donde señalo con el raton.

    pero como logro que aparte que salga de centro y llegue donde apunto con el ratón, el misil continue con su trayectoria.
    Quisas ni siquiera se hace con Tween.

    Reply
    • Hola Néstor prueba a ver con esto, aunque quizás utilizar tween no sería lo más adecuado.

      Reply
  • Hola soy Néstor:
    Realmente eres un maestro, hiciste lo que te he pedido.
    Lo malo es que no lo dije bien. En realidad es un juego, un personaje tirando un misil, por eso el misil tiene que seguir su trayectoria asta donde yo se lo indique, su velocidad tiene que ser constante (la que yo le indique) y no se tiene que reiniciar el disparo al volverle hacer clic, tiene que aparecer otro disparo.
    Como soy muy nuevo con el AS3 soy solo un novato y me la paso leyendo mucho, probando diferentes cosas y ahora deje el tween y estoy probando esto.

    Pero aun no logro que el tiro valla a la misma velocidad sin importar en que distancia apunte entre "inicio" y donde le hice clic, tampoco logro que se deje de reiniciar el tiro con cada click que doy, tampoco logre que cada vez que se haga clic se produzca un nuevo tiro sin que desaparezca el que esta en ejecución cosa que haya mas de 1 bolaFuego a la vez en la pantalla.

    Reply
    • Hola Néstor, para hacer lo que quieres tienes 2 opciones, una sencillita es controlar toda la inteligencia del arma desde el código principal y la otra opción quizás la más adecuada en el caso de que haya previsión de que el juego crezca pues sería la de abstraer toda la inteligencia o el código encargado de controlar el comportamiento de la munición fuera del código principal en una clase BolaFuego.
      De todas maneras si el juego va a ser sencillito puedes programar toda la inteligencia de bola Fuego en el código principal sin problemas.

      Para hacer que cada bola de fuego sea independiente y no se reinicie cada vez que haces click con el ratón lo que tienes que hacer es que cada vez que hagas click con el ratón es crear una instancia nueva de esa bola de fuego y guardar la instancia en un Array.

      A partir de ahí necesitas un bucle (EnterFrame)que vaya recorriendo el array y vaya incrementando la posición X e Y de cada objeto bola de fuego que se encuentre en el array.
      Así consigues que si disparas 5 bolas seguidas todas las bolas se muevan a la vez y de manera independiente. Si te fijas en el ejemplo del selector de unidades de arriba del esta entrada del blog utilizo una técnica parecida para desplazar las unidades, en este caso se puede extrapolar para el caso de las armas.
      Como cada bola de fuego deberá tener un vida distancia predeterminada o aleatoria cuando dicho recorrido se termine, el tiempo se acabe o haya impactado con un objetivo deberás borrar o eliminar la instancia de la bola de fuego en cuestión del array y posteriormente del display List, deberás asegurarte que se borra cualquier referencia a la instancia del objeto o clase bola de fuego que vayas eliminando para que pasen a ser aptas para el recolector de basura y no se te queden ocupando memoria.

      Cuando pueda mirare de hacerte un ejemplo y te lo paso que ahora me encuentro en el trabajo

      Reply

Deja un comentario

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

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">