Como hacer un fondo con movimiento

Hola saludos,estoy intentando hacer un juego de naves y le he puesto el fondo galaxia para que tenga desplazamiento vertical.

Lo que queria saber es si puedo crear otro fondo personalizado con otro imagen pero con las propiedades del fondo galaxia para que tenga movimiento vertical,y si no se puede agradeceria que me esplicarais como hacerlo de otra manera.

Otra es que queria saber como hacer invisible los sprites,pero no quiero usar el actor invisible,esto es muy util para crear detectores con los sprites.

Tambien queria comentar una cosa que comente hace tiempo,pero no se a arreglado en pilas y voy a comentarlo otra vez ,el problema pasa cuando escribo codigo ya sea en el interprete o en el editor y me sale el desplegable con las funciones para completar,yo pulso enter en una funcion para completar y al principio me va bien pero cuando llevo usando pilas unos minutos y autocompleto con enter tarde unos segundos en autocompletar la funcion y cuanto mas tiempo estoy usando pilas mas tarde en autocompletar.

Espero que esta vez me alla esplicado bien.Hsta pronto

Hola @hokuto!!, perdón por la demora …

Para crear un fondo de videojuegos como galaxias lo más conveniente es usar una imagen que actúe como mosaico, es decir, una imagen que se pueda repetir una y otra vez simulando un espacio infinito.

Por ejemplo, si tenes una imagen llamada “sky.png”, lo más simple para hacer un fondo es escribir esta linea de código:

pilas.fondos.FondoMozaico("sky.png")

Y luego, cada vez que muevas la cámara el fondo se desplazará acordemente. Por ejemplo, si movemos la cámara a la derecha (x = 2000) en 10 segundos:

pilas.camara.x = [2000], 10

Esto también se puede probar sin usar ninguna imagen personalizada, por ejemplo, si escribís:

pilas.fondos.FondoMozaico("mono.png")

Vas a notar que pilas tomará la imagen que le envíes y va a repetirla cuantas veces pueda para cubrir toda la pantalla:

Por supuesto que lo ideal es usar una imagen que aparente ser un fondo real, como este ejemplo:

pilas.fondos.FondoMozaico("fondos/espacio.png")

Otra opción a la hora de hacer fondos es usar actores comunes y corrientes, y hacer que se muevan solos, sin desplazar la cámara.

Por ejemplo, si querés hacer un fondo tipo bosque para un juego de naves podrías usar esta imagen:

Y luego asignarsela a un actor, indicándole que la imagen se tiene que repetir horizontalmente:

mi_fondo = pilas.actores.Actor()
mi_fondo.imagen = "arboles.png"
mi_fondo.z = 200
mi_fondo.imagen.repetir_horizontal = True

Y para producir el efecto de movimiento, agregar algo así:

def mover_fondo():
    mi_fondo.x -= 1

pilas.tareas.siempre(1/60.0, mover_fondo)

También existe el atributo repetir_vertical, que funciona casi igual, solo que sirve para que la imagen se repita verticalmente.

Por cierto, si buscas en internet imágenes tipo “space tile”, o “sky tile” vas a encontrar varias imágenes que te pueden servir. Incluso hay colecciones disponibles para descargar en sitios gratuitos como OpenGameArt: https://opengameart.org/content/bevouliin-free-game-background-for-game-developers

Con respecto a la velocidad del intérprete, ¿probaste deshabilitar el autocompletado desde las opciones de pilas?, ¿deshabilitar esa opción previene que se haga lento?.

No pude reproducir ese error en otros equipos, pero si logro hacerlo fallar como en tu equipo seguramente pueda resolverlo.

Ah, y por último, para ocultar un actor podrías cambiarle la transparencia a 100:

mono.transparencia = [100]

O sin los si quieres que sea inmediato:

mono.transparencia = 100

Saludos!!

Gracias por todas tus respuestas,es un placer preguntar en el foro de pilas,probare todo lo que me comentas.

Por cierto voy a preguntarte una cosa,se te ha pasaso por la cabeza unir pilasengine con pilasbloques,vendria muy bien para gente que quiere aprender,pero prefiere empezar con lo visual.

Yo he visto pencilcode de google que traduce los bloques en codigo y viseversa,se podria hacer algo parecido en pilas y seria una muy buena idea para aprender mas rapido.¿Que te parece la idea?.Hasta pronto y gracias de nuevo por tus respuestas