necesito ayuda con mi actor

no se como hacer que mi actor solo lanze 3 cierras hasta que este desaparescan del fondo y reiniciar otra vez pero no puedo, tambien quiero que cuando este en reposo cambie como un efecto de varias imagenes no se como hacer eso que cambie solo y tambien que corra o camine y pueda saltar cambiando las imagenes no se como hacer esto soy nuevo ayudenme gracias por leer el mensaje

1 Like

Saludos, bueno primero lo primero.
Primero hay que definir bien lo que se requiere, y luego definir como hacerlo.
Pilas es muy sencillo hacer eso que requiere hay muchos ejemplos y guias, te acompaño a ayudarte en lo que requieres.
A ver entiendo que lo que requieres es la animación en estado de reposo del personaje, y la animacion en movimiento. Alli utilizamos algunos conceptos que es necesario que conozcas como lo son el sprite, la animacion, el motor de fisica etc.
Tambien buscaremos ejemplos
Te digo en futuro y en plural porque me agrego a tu inquietud, tengo ya casi un año sin trabajar en pilas ni en python por estar desarrollando otros proyectos con otras tecnologias, por lo que en estos momentos estoy como en las nubes, pero te voy a ayudar paso a paso para entonar los conocimientos, te parece?

Abre para comenzar el ejemplo que trae Pilas del “El Shaolin”, si lo tienes instalado.
Me imagino que eso es lo que quieres hacer con el personaje?

Aqui te coloco el simple codigo que requiere pilas para poner en accion un personaje tal como tu lo quieres, ojo, la magia que esta detras la iremos descubriendo poco a poco.
Abre pilas, y dale en abrir editor y pega lo siguiente,
import pilasengine

pilas = pilasengine.iniciar()

pilas.fondos.Cesped()
shaolin = pilas.actores.Shaolin(y=-100)

pilas.avisar("Pulsa el teclado para manejar al shaolin")
pilas.ejecutar()

Ahora dale en el boton de play, y sigue la instrucción, y veras que el actor se mueve y esta animado
jejeje, ahora la magia que lo hace es divertido descubrirla, para eso nuestro amigos de pilas han colocado informacion, ayuda, ejemplo y este foro. Por lo que seguiremos buscando.
Ahhh, hay tareas que hacer, leer y practicar, y en eso descubriras que tambien diversion :slight_smile:

Buen inicio es leer el manual de pilas, esta en el sitio web, y es muy practico.
http://manual.pilas-engine.com.ar/

Te recomiendo que leas especialmente esto: Actores personalizados - pilas-engine

y esta
http://manual.pilas-engine.com.ar/imagen/#animaciones-controladas-a-mano-con-una-grilla

Bueno tenemos por hoy, leeremos y revisemos esos conceptos, y luego veremos. Ojo estoy haciendo conjunto contigo. Animo. Cualquier duda lanzala

1 Like

muchas gracias esteba esperando algo de ayuda muy poco se de pilas engine pero el juego que estoy haciendo tiene musica y muchos sprites

1 Like

si tengo el pilas engine instalado :slight_smile:

1 Like

Muy bien amigo, bueno ya tengo algo basico para aprender. Siguiendo el manual de Pilas y craendo mi propio ejemplo, muy basico, sencillo pero que estoy seguro que nos va a aclarar mucho las ideas.
Imagino que le diste una releida a las partes del manual?
Si es así, entonces ya debes saber que lo principal de Pilas que debe haber almenos uno , es el Actor.

Ese será tu personaje del videojuego, él ejecutará todas las acciones que tu le programes. Ojo, todo lo que tu quieras que haga lo hará, pero tu le tienes que describir paso a paso como hacerlas, gracias a @hugoruscitti nos lo ha puesto muy facil, tanto para aprender a programar como aprender python como para realizar el sueño de muchos de manera sencilla y en español!!!

Corriste el ejemplo del shaolin? Vamos a inspirarnos en ese ejemplo, por ahora para empezar no nos concentremos en el código como esta hecho, porque realmente es muy sencillo, pero no nos dice mucho de como funciona el pilas como para empezar, por lo que paso a paso vamos a construir algo que se acerque a lo que deseas.

Vamos a comenzar:
1.> busca una imagen (sprite), la que gustes para tu personaje. (ojo no desesperes: la imagen puede ser sencilla del personaje, luego hablaremos de una hoja de sprites y como la maneja pilas)
Aqui te pongo una de ejemplo que yo use:

Esa imagen tiene algunas propiedades esenciales para realizar nuestro cometido, es pequeña relativamente, 322X169 pixeles
Ademas tiene un fondo transparente, es decir es traslucida, se ve todo lo que esta detras del personaje.
Es formato png, un formato fabuloso para realizar lo que queramos.

2.> Busca una imagen un poco mas grande, que tenga por ejemplo un paisaje, para el fondo, para ir dando sensaciones de lo que se quiere. Te adjunto una que use para el ejemplo:

Te podrás dar cuenta que esta imagen es mucho mas grande y no tiene trasparencias, porque no se necesitan :slight_smile:

3.> Ahora usaremos el editor de código, puedes usar el que desees, pilas trae uno muy bueno porque permite realizar pruebas de desarrollo. Yo uso Atom, porque no solo lo uso para pilas, sino para todos mis proyectos. Pero el editor no es tan tan importante, por ahora te basta el de pilas. (Ojo yo uso linux, desconozco como funciona windows con el python si tendras problemas para la explicacion que te doy, supongo que no, pero las dudas las escribes y habra alguien que si usa windows, en caso que tu uses windows por supuesto)

4.> Echaremos código, es decir a programar, a llevar a cabo lo que aprendimos del manual y ver que podemos hacer.
Crea un archivo nuevo, llamalo como tu lo desees, yo lo llame mi_actor01.py (observa la extencion del archivo es .py ya que es un script del lenguaje python)

5.> Crea una carpeta y ponle el nombre de tu proyecto, el que quieras, y en ella mete las dos imagenes y el archivo mi_actor01.py

6.>Primera linea del archivo mi_actor01.py:

import pilasengine

Esta linea es muy importante, ella por asi decirlo nos carga el Motor de Pilas para usarlo en nuestro proyecto, sin esa linea no podrias ejecutar las instrucciones que siguen.

7.> Segunda linea:
pilas = pilasengine.iniciar()

Ahora iniciamos el motor de pilas, y tenemos esa instancia en esa variable “pilas”

8.> Tercera Linea:
actor = pilas.actores.Actor(imagen=“capguy-walk0.png”)

Creamos al actor, yo lo llame actor, y le pase como parametro imagen el nombre de la imagen del actor, en mi caso la del personaje. Ojo, nombra la imagen de manera que sea facil de recordar y usar.

Ya aquí tenemos un actor con una imagen en pantalla, de echo, toda imagen que se requiera introducir debe ser un actor, en pilas hay unos cuantos, por ejemplo mono, el shaolin, la aceituna etc. Nosotros crearemos uno a partir de Actor.

Ahora, esa variable actor que acabas de difinir, declarar e inicializar es nuestro personaje.

9.> Cuarta Linea:

actor.x=-200

Con esta linea, le estamos diciendo al personaje que se encuentra incialmente en el centro que vaya 200 unidades hacia atras, es decir a la izquierda

10.> Quinta linea:

actor.escala=0.5

Con esta linea le estamos diciendo que ponga mas pequeña la imagen, 0.5 es la mitad, 1 es el tamaño original, 2 es el doble y así sucesivamente.

11.> Sexta linea:

pilas.ejecutar()

Esta ultima da la orden para que se ejecuten todas las sentencias del script que acabamos de hacer, salvalo y ahora a probar.

12.> El archivo quedaria algo asi:

13.> Para ejecutarlo en el editor de pilas dale a run en el boton de iniciar, yo simplemente dentro del directorio del proyecto ejecuto la orden en la consola:

python mi_actor01.py

14.> Resultado:

15.> Este actor aun no se mueve con el teclado, ni esta haciendo nada, pero te aseguro que es un potencial que pronto lo hara. Te pido paciencia para traerte la segunda parte que ya este actor hara otras cosas.

16.> Si te gusta el proceso avisame para continuar jejejeje :slight_smile:

Hasta Luego…

2 Likes

No habia visto esto, tu sabes de pilas? Bueno tranquilo, asi me sirve para ir poniendome a tono y llegar a donde quieres, te agradezco paciencia jejeje. Seguro que sera util para otros amigos :slight_smile:

Aqui una pequeña muestra de como quedara

estoy interesado ya aprendi como poner imagenes png en pilas engine quiero ir mas profundo para saber mas pero tengo que esperar y si soy paciente puedo pasar mucho tiempo en un solo lugar sin hacer nada pero bueno te agradesco mucho por haberme ayudado :smile::smile: espero que me respondas cuando tengas tiempo

Si amigo en breve te coloco la segunda parte, son 7 partes, para ir aprendiendo, ya tengo todo listo, pero no esta semana que paso y parte de esta he estado ocupado porque me encargaron un proyecto que me lleva full, pero entre hoy 19 y manana seguro que lanzo la segunda parte.

Bueno, ahora lo que tienes que saber es que es los spritesheet, ahi te dejo esa
Nota: no es solo poner una imagen, jejeje por eso te coloque el video para que vieras como va a quedar, y apartir de alli le podemos porner las cierras animas etc…

@SAIDBROS, tendremos que comenzar de cero, bueno mejor asi afianzamos mas los conocimiento, bueno me refiero a que tengo que volver hacer todo, porque he tenido un problema con la lapto y habia perdido alguna data, y recien estoy buscando para montarlos en el foro me doy cuenta que he perdido todo.
El trabajo que da es el hecho de realizar la animación es la creación del spritesheet, bueno pero no es para morirse, jejejeje.
te subo ahora el sprite sheet del actor caminando
Ahh, yo te habia hecho un isntructivo paso a paso, detallado, pero por lo ocupado que estoy te lo hare al vuelo y espero tus preguntas,

Hasta ahora has cargado una solo imagen, pero ahora cargaremos una sola pero dividida en partes, y cada parte de esa imagen sera parte de una escena o animacion, como por ejemplo caminar, se necesitan algunas imagenes para dar sensacion de movimiento, y es alli donde entra en juego los spritesheet o hojas de sprites.

Alli tienes lo que es un spritesheet, date cuenta que aparece el muñeco mostrando todas las posiciones necesarias para hacer el movimiento de caminar.

Otra cosa, esa imagen tal como esta alli, no sirve de mucho, porque le falta que este montada en un fondo transparente, y esta montada en uno blanco, que no se nota , por lo hay que editarla, puedes usar gimp, te lo recomiendo, y para lo que quieres aprende a usarlo, es muy sencillo de usar, y se sacan un buen trabajo con él, aprende a usar gimp.

Bueno, te voy a subir la hoja con la transparencia, si quieres cuando ya estemos mas avanzado practica montarla con transparencia y sin transparencia para que veas a que me refiero, en esta oportunidad no te puedo mostrar codigo ni funcionamiento, por que desgraciadamente no tengo instalado pilas, y lo intente hace un rato y con manjaro se ha hecho un poco el lio para instalarlo, luego reviso porque fue eso.

2 Likes

Algo que debes conocer de python, es algo basico pero importante. Sabes lo que es una lista en python?

Ya veras que es muy importante:

una lista la especificamos en python de la siguiente manera

mi_lista = [1,2,3,4,5,6,7]

esa lista es una lista de numeros :slight_smile:
pero tambien puedo hacer una lista de texto
mi_lista_de_texto = [“Hola”,“me”,“gusta”,“phyton”]
y asi sucesivamente.

Y python es tan magico, que puedes tener una lista mixta, de numero y de texto
lista = [“Hola”,2,3]
print(lista)

y el resultado sera: [‘Hola’, 2, 3]

Ahora para que sirve la lista???
Para guardar en una misma variable muchas cosas !!!.
Y como yo accedo a cada cosa?
Por indice!!!, no recuerdo si se llama indice, pero es que yo programo java, y me cuesta jejeje

Asi, veamos la variable lista, cual era el contenido? ah si [‘Hola’, 2, 3]
como hago yo para sacar de esa variable solo el primer valor?

Simple uso el indice, comenzando desde el 0 cero, es decir el primer elemento esta en la posicion cero, el segundo en 1, la tercera en 2 etc. y lo escribo en pytho de la siguiente manera

variable = lista[0]
print (variable)

el resultado es ‘Hola’.

Bueno @SAIDBROS, tambien puedo tener listas de imagenes!

pero iremos paso a paso, aun no vayas al paint a recortar spritesheet, jejejeje esperate. Nuestro amigo @hugoruscitti nos hizo la tarea, y ya veras que hay una funcion que nos recorta la imagen indexando justamente la que queremos, y con eso es que se anima.

Una animacion consiste de una serie de imagenes estaticas que cambian a un ritmo determinado con una duracion determinada que produce una sensacion de movimiento.

Por lo que en la proxima necesitamos conocer un poquito de listas, sprite, spritesheet, y unas cosas mas de python, pero que @hugoruscitti nos ha simplificado muchisimo.

1 Like

vaya apenas vamos por el segundo paso eso me impresiona :grin: bueno mejor aun porque aprenderé mucho sobre como hacer animaciones y si tengo gimp 2.8 me cuesta un poco dificil usarlo pero lo que me cuesta es borrar el fondo blanco no se borra o algo que no debe hacer pero bueno me gusta aprender no estado en pilas engine unos dias por las tareas que me mandan espero la tercera parte estoy muy contento :yum:

Que bien que tengas gimp, es sencillo de usar, solo que no igual al paint. Toma el ultimo spritesheet donde sale el chico pero mas grande, ya tiene transparencia.

Para dar transparencia a la imagen con git es sencillo, una imagen cualquiera la seleccionas , hay varias manera de seleccionar el contorno, a mano alzada, con recortar o la que uso para animaciones la varita magica, Selecciono el fondo, y luego invierto la seleccion, copio y creo una capa transparente y pego mi imagen alli, parece complicado pero cuando lo hagas sera muy sencillo, en un rato te mando un link a un curso en youtube excelente en gimp alli aprendi muchisimas cosas como en dos horas.

@SAIDBROS una propiedad excelente en programar en python es que las cosas que hagamos pueden ser heredadas por otros,

En el codigo anterior que te puse, que solo presentaba un chico en la pantalla, estabamos usando una instancia de un objeto, que era de clase Actor.
Lo creamos haciendo
actor=pilas.actores.Actor(imagen = “chico.png”)

Es decir, creamos un actor a partir de un codigo que ya esta hecho, si te habras dado cuenta ese actor ya tienes algunas cosas que puede hacer pero que estan ocultas.
por ejemplo hacer que hable.

Basta con decirle

actor.decir("Hola Mundo")

Bueno, y donde esta el codigo que hace que diga eso, tenemos dos alternativas, meternos mar adentro y buscarlo y verlo, o solo usarlo y hacer nuestras cosas por nosotros mismos. Usando claro esta lo que ya esta hecho. Bueno hagamos eso, creemos nuestro propio actor.

como vamos a crear uno nuevo actor, con propiedades que tu le quieres poner, ademas de las que ya tiene, hacemos una plantilla, por asi decirlo con la palabra class (si sabes poo obvia todo esto).

import pilasengine
#instanciamos al motor de pila y lo tenemos en una variable listo
#para que sea usado
pilas = pilasengine.iniciar()
class Chico(pilasengine.actores.Actor):
    def iniciar(self):
        self.imagen = "chico_gorra.png"

actor =Chico(pilas):

Si corremos este codigo, te daras cuenta que es lo mismo que el anterior, solo que estas haciendo una nueva plantilla que se llama Chico, que herada todo lo que hace Actor

En python, y en casi todos los lenguajes oo hay un metodo que se llama metodo constructor, que se emplea generalmente para iniciar todo, para hacer los pasos previos de lo que se necesita.
@hugoruscitti, nos preparo un metodo en espannol que vendria a ser como el construcctor de nuestro objeto, y ese es el metodo iniciar()
Como es un metodo de la clase, siempre debe recibir al menos un parametro, al menos recibe self, haciendo referencia a la misma clase.

Por lo tanto usemos ese metodo para colocarle todo lo que tiene que iniciarse, por ejemplo en el caso del chico, lo primero es cargar la imagen que se va usar, tambien podriamos situarlo de una vez donde va a ir en la pantalla, y como es muy grande le podemos cambiar el tamanno.

como? muy simple, en ese metodo, hagamos lo siguiente:

    def iniciar(self):
        self.imagen = "chico_gorra.png"
        self.escala = 0.5

Si en este punto corres el programa, te dars cuenta que el personaje ahora es mas pequenno, y eso es debido a que hemos modificado un parametros, la escala. Como funciona por dentro? Se puede buscar en el codigo @hugoruscitti lo puso todo alli, pero no interesa por ahora, eso lleva muy tiempo. Por lo que podemos usarlo,

Por que te digo esto?, porque iran saliendo cosas que no parecen asi como obvias, pero que estan para facilitarnos el trabajo. Ya veras mas adelante porque te digo esto

El metodo inciar() lo hizo @hugoruscitti, pero tu puedes usar tus propios metodos, que hagan lo que tu quieres que hagan, incluso usar metodos que esten en pilas.

Por ejemplo hagamos un metodo que se llame saludar, que simplemente diga en pantalla un saludo

para ello:

def saludar(self,texto="amigo"):
        #imprime en la consola
        print("Hola " + texto)
        #imprime en la pantalla
        self.decir("Hola " + texto)

Y ya el chico hace otras cosas… con un metodo hecho por ti, y ese metodo usa metodos de Actor, observa el self.decir, self se refiere a si mismo, y el viene de Actor, por lo que el codigo de actor tiene ese metodo y muchos mas.

Otro metodo importante el metodo update
Este metodo es el que mas vas a utilizar para hacer tus juegos, @hugoruscitti hizo una especie de conjuro o algo asi, que hace que ese metodo se ejecute automaticamente 60 veces en un segundo. Nosotros no tenemos que hacer nada, solo colocar dentro de ese metodo lo que quieres que suceda repetidamente. Eso es importante en los videos juegos

Porque es importante, porque com ese metodo podemos detectar las teclas que estas precionando, hacer animaciones, por que 60 imagenes en un segundo son bastantes imagenes. Bueno he aqui uno de los princicios de la magia que tu quieres hacer,

Hagamos ese metodo, que ya @hugoruscitti lo tiene casi listo, al menos que se cumpla 60 veces en un segundo.

def actualizar(self):
        if self.pilas.control.izquierda:
            self.x -= 5
            self.espejado = True
        if self.pilas.control.derecha:
            self.x += 5
            self.espejado = False 

Para entender ese metodo veamos algunas lineas
que es eso de self.pilas.control.izquierda ?
BUENO ES MUY SIMPLE se refiere al evento de pisar la tecla que va a la izquierda. Y cual es esa tecla, es la tecla de flecha hacia la izquierda del teclado, aunque se puede mapear, es decir asignar otra, pero para otro dia eso. Tan simple que podemos detectar cuando se presiona esa tecla, y que hacer, bueno simple avanzar en el eje x 10 unidades
Y el otro caso es ir hacia la derecha, por lo que consiste en decrementar las x en 10.
Que es self.espejado = True ? Ese es otro artilugio de brujeria, simplemente lo que hace es invertir la imagen, si te acuerdas el chico esta viendo hacia la derecha, si presionamos hacia la derecha le chico camina hacia la derecha, pero si precionamos hacia la izquierda el chico estaria yendo hacia izquierda pero viendo hacia la derecha, es decir va de retro, por lo que si lo espejamos, ahora el chico va hacia la izquierda y ve hacia la izquierda.

Y como es eso de que avanza,? por que la posicion del chico, en la posicion x la podemos cambiar a nuestro gusto, con self.x=aloquequeramos

Bueno y ya tenemos la base queda algo asi

# -*- encoding: utf-8 -*-

import pilasengine
#instanciamos al motor de pila y lo tenemos en una variable listo
#para que sea usado
pilas = pilasengine.iniciar()


class Chico(pilasengine.actores.Actor):

    def iniciar(self):
        self.imagen = "chico_gorra.png"
        self.escala = 0.5

    def saludar(self,texto="amigo"):
        #imprime en la consola
        print("Hola " + texto)
        #imprime en la pantalla
        self.decir("Hola " + texto)

    def actualizar(self):
        if self.pilas.control.izquierda:
            self.x -= 10
            self.espejado = True
        if self.pilas.control.derecha:
            self.x +=10
            self.espejado = False

actor =Chico(pilas)
actor.saludar("SAIDBROS")

Correlo y pruebalo, las animaciones ya estan cerca

perdón si no te he podido responder es que se me callo la internet hace una semana llego hace dos días y que bien que ya estemos cerca de las animaciones pero lo que quiero saber es como llamo el actor osea cuando lo tengo en mi carpeta y yo solo le pongo la acción que esta haciendo que esta caminando lo tengo que llamar chico1.png? o camina1.png?

No entiendo bien tu pregunta, pero por ahora solo vamos a cargar una imagen que no tendra animacion, tal como esta , en la proxima entrega lo ponemos a caminar con animacion… Por lo que ahora solo emplearemos la imagen de chico y luego la de camina

1 Like

ok :neutral_face: gracias por responderme a pasado como 3 o 4 semanas no? por lo menos se que tienes un poco de tiempo para decirme algo eso me encanta por que aprendo y luego les enseño a los demas :relieved: