Puede acceder al curso completo aquí: Descubre SFML para C ++ desarrollo del juego

Dibujo Sprites

Hemos visto cómo dibujar una forma básica pero siendo realistas, la mayoría de nuestros juegos se utilice más de las formas. Vamos a querer lugar gráficos, iconos y otras imágenes en nuestros juegos y lo hacemos a través de Sprites . La creación de un Sprite generalmente se realiza en dos pasos con SFML: en primer lugar, cargamos en un textura , entonces se crea una sprites y pase en la textura. Una vez que hemos puesto en marcha el sprite, podemos establecer atributos tales como el tamaño y la posición y luego mostrarlo dibujando en la ventana durante el bucle de ejecución.

En nuestro proyecto, debe crear un carpeta llamada activos que contiene todos los activos necesarios en nuestro juego. Sólo tenemos 4 así que no hay necesidad de más división carpeta de los activos. Copia del “enemy.png” y las imágenes “background.png”, el archivo de audio “damage.ogg”, y los archivos de fuentes “arial.ttf” de sus archivos proporcionados y pegarlos en los activos carpeta . Vamos a trabajar sólo con la imagen Enemy.png por ahora. Para crear una textura, primero creamos un textura variables y luego llamar a la , función LoadFromFile (), pasando por la ruta del archivo como una cadena. Se devuelve verdadero si tiene éxito, y falso en caso contrario por lo que debe realizar una prueba booleana para ver si la carga se ha realizado correctamente. En nuestra función principal, escribir este código después del código para crear la ventana y antes de que el bucle de ejecución:
sf :: textura textura; si (texture.loadFromFile ( «activos / enemy.png»)) {std :: cout << "No se pudo cargar la textura enemigo" << std :: endl; return 0;} 12345sf :: textura textura; si (texture.loadFromFile ( "activos / enemy.png")) {std :: cout << "No se pudo cargar la textura enemigo" << std :: endl; return0;}

Esto creará una variable de tipo sf :: textura y cargar la imagen en ella. Si la carga no es la impresión de un mensaje de error y el retorno. A veces, la carga de un activo falla por alguna razón desconocida por lo que debemos manejar adecuadamente cualquier error . Tendrá que #include en la parte superior de main.cpp también. Una vez que tengamos la textura, podemos crear un objeto Sprite llamada enemySprite y pasar en la textura de esta manera:
sf :: Sprite enemySprite; enemySprite.setTexture (textura); 12SF :: Sprite enemySprite; enemySprite.setTexture (textura);

El sprite sólo será tan grande como la imagen proporcionada y por defecto a estar en posición de (0,0) o en la esquina superior izquierda. Podemos cambiar la posición de la siguiente manera:
enemySprite.setPosition (sf :: Vector2f (100,100)); 1enemySprite.setPosition (sf :: Vector2f (100,100));

¿Qué aporta el sprite 100 píxeles fuera de la izquierda y 100 píxeles fuera desde la derecha y aumentar el tamaño del sprite mediante el escalado de esta manera:
enemySprite.scale (sf :: Vector2f (1,1.5)); 1enemySprite.scale (sf :: Vector2f (1,1.5));

Esto escalar la anchura del sprite por 1 (sin modificar) y la escala de la altura 1,5 veces su altura original. Observe cómo toman las dos funciones de un sf :: Vector2f como entradas y cada uno necesita un valor de x e y . Para dibujar el sprite, cambiamos el código empate a esto:
window.clear (); window.draw (enemySprite); window.display (); 123window.clear (); window.draw (enemySprite); window.display ();

Siempre tiene que borrar la ventana antes de sacar nada y mostrar la ventana después nos acercamos a él.

Transcripción

¿Qué pasa todo el mundo? Bienvenido a nuestro tutorial sobre dibujar sprites. Aquí vamos a tener una rápida introducción a lo que son los sprites de un contexto de juego y la forma de crear y utilizar en SFML.

Así que este es en realidad un proceso de dos etapas, la primera cosa que tenemos que hacer es crear un objeto de la textura. Una vez que tengamos que podemos crear un sprite de ella y entonces podemos establecer la posición y la escala. Para que la cabeza nos dejó al código y empezar. Muy bien, así que sólo un rápido cabezas para arriba otra vez, tomé todo el código de la sección anterior, no que realmente hicimos mucho y lo puso en código antiguo y voy a seguir para hacer esto con cada nueva sección.

Muy bien, así que lo que es un sprite de un contexto juego? Bueno, esencialmente, un sprite va a ser un objeto en el juego que tiene una imagen asociada a ella. Así que esto es realmente la principal diferencia entre las formas y los sprites digamos vamos en los juegos es que un sprite tiene una imagen y una forma apenas tiene así una forma. Sólo tiene sus límites, tiene algún tipo de código de dictar qué forma esos límites se enfrentará a, ser de círculos, cuadrados, rectángulos, etc.

Así que en nuestro caso, el fondo de nuestro juego y el propio enemigo, los que son a la vez va a ser sprites, no estamos realmente va a trabajar con formas mucho. Así que como he dicho este es un proceso de dos pasos. Lo primero que tenemos que hacer es cargar en una textura y una textura necesita una imagen para carga. Así que por eso tuve que cargar en la carpeta de activos. Así que su proyecto debe ser similar a este proyecto, SFML, tiene sus códigos, y entonces usted tiene sus activos carpeta con los elementos que contiene. Usaremos el TTF como un tipo de letra más adelante. Lo mismo con el damage.ogg, que es para el sonido. Por ahora, al menos, querrá que la enemy.png porque eso es lo que vamos a estar trabajando aquí. Está bien, así que mientras lo tenemos en nuestros activos del proyecto /enemy.png, entonces podemos cargarlo en esta manera.

Está bien, lo primero que tendremos que hacer es crear una textura en sí por lo que vamos a hacer sf, la textura, la textura. Bien, ahora una textura como la ventana Render es parte de la biblioteca de gráficos SFML. Cada vez que necesite un nuevo módulo, tendrá que cargarlo aquí. Está bien, así que tenemos un objeto de la textura, que en realidad no necesita llamar a un constructor, establezca su valor en una textura o algo por el estilo. Una vez que se crea el objeto, tenemos acceso a ella de inmediato y tenemos que llamar a la carga de la función de archivo, como este texture.load De archivo, vaya! No cargue de la corriente que queremos carga de archivo.

De acuerdo, y luego vamos a pasar en la ruta al archivo. Así que en este caso esto va a ser “activos /‘enemigo’.png”. Ahora bien, esto es en realidad va a devolver verdadero o falso basado en el éxito o el fracaso. Así que vamos a decir algo así como si el texto en realidad, nos dirá si no texture.load de archivo, entonces tal vez sólo tendremos que mostrarán algunos mensajes y de retorno. Así que vamos a cerca de eso y esto en realidad debería estar aquí.

De acuerdo, por lo que en este caso, lo que podemos hacer es algo así como estándar de C a cabo, en realidad no creo que tengamos la biblioteca flujo de iOS, así que sólo voy a incluir ese momento. Incluya su flujo. Está bien, buen material. Bien, ahora lo que haremos es c algo así como “No se puede cargar,‘enemigo textura’. De acuerdo, y luego sólo vamos a acabar con ella.

Está bien y porque realmente queremos que el juego sólo se ejecutan si se carga la textura, estamos realmente va falsa retorno. Fresco, así que mientras este es el caso oh realmente saben qué? Esto está regresando a su vez, cero. Está bien, así que mientras se carga la textura, así que mientras esto no volver a cero, entonces tenemos una textura más bien una imagen cargada en esta textura, y ahora podemos usarlo con un Sprite. Así que para hacer eso, vamos a hacer básicamente el mismo proceso que con la textura, tenemos que crear el objeto de sprites en primer lugar, Sprite y Llamaremos a esto como enemySprites o algo así.

De acuerdo, y luego vamos a invocar el enemySprite. setTexture función y entonces estamos sólo voy a pasar en la textura que cargamos. Muy bien, así que esto asociar una textura con un Sprite. Por lo que ahora se crea el sprite Tiene una textura y podemos dibujarlo. No sabemos exactamente qué tamaño o la posición, así que sabemos qué posición será en el que será 00 por defecto que será la esquina superior izquierda y el tamaño será exactamente el tamaño de la imagen en sí. Podemos modificar esa tarde y que vamos a hacer en un minuto aquí.

De acuerdo, por lo que sólo el uso de los valores por defecto, si queremos sacar esto a la ventana, simplemente invocan el window.draw y luego pase en el Sprite. Así pues, en este caso, enemySprite. Está bien, enfriar. Así que vamos a llegar esta Guardar, y vamos a ejecutar el código, vamos a ver qué pasa. Tan clara que, vamos a compilar y, a continuación vamos a correr y ahora se puede ver que tenemos este sprite poco en nuestro juego.

Es obvio que hay algunas cuestiones que aquí se está haciendo cortan para que la pantalla no es lo suficientemente grande como para empezar. Además, esto es un poco en la esquina superior izquierda, puede ser que no queremos que existe y puede que no sea lo suficientemente bastante grande. Está bien, así que esto es todas las cosas que podemos sólo tal vez vamos a hacer un 500 por 500 de la ventana. De esa manera tiene suficiente tamaño para extraer la mayor parte de las cosas que necesitamos. Entonces si vamos a volver a ejecutarlo, probablemente deberíamos ver que no va a tomar toda la pantalla más. Es sólo ocupa una parte de ella. Así que tal vez no queremos que en la parte superior izquierda. Tal vez lo queremos tipo de un poco centrado.

Entonces, ¿qué podemos hacer es quizá moverlo alrededor de 100 píxeles a la derecha y 100 píxeles hacia abajo, podría poner más o menos en el centro, está bien. Entonces, ¿qué podemos hacer es tomar este elemento sprite enemigo, enemySprite, está bien y podemos ajustar la posición de la misma. Por lo tanto, esto va a tomar en un un objeto f Vector dos como este SF Vector dos f que se llevará en un vector de dos flotador dimensional, y esto tendrá una anchura y una altura o un valor X e Y. Así pues, en este caso, sólo haremos un 100 y 100. Está bien, si vamos a LETS cerca de este lugar, vamos a volver a ejecutarlo.

Bueno, por lo recompilar, otra vez, cada vez que realice un cambio, usted tiene que volver a compilar, se puede ver que esto ahora se ha movido, también podemos cambiar la altura, vamos a clase de maquillaje de este tipo un poco más alto bits , pero no necesariamente va a cambiar el ancho de la misma. Entonces, ¿qué podemos hacer es estrecha permite que hasta hacer la enemySprite. Y podemos escalarla. Está bien, extrañamente lo suficiente, no se puede asignar una anchura y altura específica, que realmente tiene que cosas escala.

De acuerdo, por lo que en este caso, vamos a pasar de nuevo en un vector2f, capital V, vector dos f, está bien y luego vamos a pasar en la cantidad en que queremos escalar el X y el cantidad por la cual queremos escalar la y. Por lo que la x va a seguir siendo exactamente el mismo. Por lo que sólo tendremos que hacer una, la y, sin embargo, queremos cambiar la altura, tal vez vamos a hacer como un 1,5 y ver cómo eso funciona.

Bueno, por lo que volveremos a aquí. Bueno, supongo que no necesitamos para desactivarla. Tendremos tipo de recompilación y vamos a volver a ejecutarlo y ahora se puede ver que este hombre se estira horrible, pero al menos el escalamiento trabajó. Ahora hay un montón de otras cosas que podemos hacer con Sprites pero esto será más o menos en la medida de lo que vamos a hacer en este curso con nuestros Sprites.

Una última cosa a la nota antes de pasar a la siguiente sección es que los sprites de selección es en realidad todo este rectángulo. Extrañamente, el cuadro delimitador no sigue la imagen como esta. Esto va a ser el cuadro delimitador. Por eso, cuando lo que se refiere a la detección de clics del ratón en el cielo, incluso si hace clic aquí, es técnicamente dentro del cuadro delimitador. Así que va a registrar un clic. Está bien, vamos a conseguir más en eso un poco más adelante. Sólo quería hacerte consciente chicos ahora. Está bien, vamos a cerrar esto.

De lo contrario, eso es todo. Así pues, en esta sección, cubrimos dos cosas, la carga de texturas, y la segunda la creación de sprites y la evaluación de sus atributos. Definitivamente me siento libre para jugar un poco con esto. Tal vez intente cargar en su fondo. Ver lo bien que puede hacer con eso. Cuando esté listo para seguir adelante, vamos a hacer más o menos lo mismo, pero con el texto. Así que estad atentos para eso. Gracias por mirar y ver ustedes en el siguiente

interesado en continuar? Echa un vistazo a la plena Descubrir SFML para C ++ desarrollo del juego de golf, que es parte de nuestra programación en C ++ paquete.

Mensajes relacionados

Deja una respuesta

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