Hola buenos dias, estoy buscando que alguien me ayude con mi juego, que esta en la pre-pre-pre alpha .
El tema es el siguiente:
Quiero hacer un juego al estilo Air Hockey, con 2 “masas”, una pelota y 2 “arcos” o zona de puntaje.Lo que hice hasta el momento es poco, pero me trabe y recien estoy empezando con pilas (hace 1 semana). Me ayude con los ejemplos y fui copiando codigo de alli,el que use fue: bloques.
Logre crear 2 actores, por ahora una aceituna y una paleta(? (si, sin eso no me anda), que seria lo que golpea a la pelota. Estos actores tiene figura de colision circular; tambien hice la simple pelota y no hice la zona de puntajes.
Mis problemas son los siguientes:
- No se si es un bug o que pero cuando cualquier aceituna colisiona en su parte frontal con la pelota, esta no rebota. Es como si hubiera gravedad y se pega por un tiempo corto al centro del actor y luego se desprende. esto no sucede en la parte inferior del mismo actor.
aceitu = pilas.actores.Aceituna()
aceitu.x = 0
aceitu.y = 300
aceitu.escala = 2.6
aceitu.figura_de_colision = pilas.fisica.Circulo(0, 0, 50, 20, True)
Estas son las propiedades de la aceituna.
pelota = pilas.actores.Pelota()
pelota.figura.escala_de_gravedad = 0
pelota.empujar(0, -10)
pelota.aprender(pilas.habilidades.Arrastrable)
pilas.colisiones.agregar(paleta, pelota, empujar_pelota)
Estos son las propiedades de la pelota.
2.Por alguna razon, que todavia no entiendo, no puedo tener 2 actores aceituna, y que el juego ande, Sin la paleta que tiene un self. no me anda.
def iniciar(self):
self.imagen = 'imagenes_bloques/paleta.png'
self.x = 0
self.y = -300
self.figura_de_colision = pilas.fisica.Circulo(0, 0, 50, 20, True)
Este es la barra o paleta.
3.La unica diferencia entre la aceituna y la paleta, es que una dice self y la otra no, pero con respecto a las coliciones estan igual y no se porque cuando la pelota toca la aceituna sale mucho mas fuerte impulsada que cuando toca la paleta.
Como si tuviera ya precargado una velocidad de impulos, si es asi como la modifico?
Les dejo el codigo:
import pilasengine
pilas = pilasengine.iniciar(ancho=550, alto=700)
pilas.fisica.crear_suelo((550, 700))
pilas.fisica.crear_techo((550, 700))
class Paleta(pilasengine.actores.Actor):
def iniciar(self):
#Esto lo tengo que modificar
self.imagen = ‘imagenes_bloques/paleta.png’
self.x = 0
self.y = -300
#Tamaño y forma de colision
self.figura_de_colision = pilas.fisica.Circulo(0, 0, 50, 20, True)
aceitu = pilas.actores.Aceituna()
aceitu.x = 0
aceitu.y = 300
aceitu.escala = 2.6
#Tamaño y forma de colision
aceitu.figura_de_colision = pilas.fisica.Circulo(0, 0, 50, 20, True)
if aceitu.x <= -265:
aceitu.x = -265
elif self.x >= 265:
self.x = 265
#El de arriba se mueva con a y d
teclas = {
pilas.simbolos.a: 'izquierda',
pilas.simbolos.d: 'derecha',
pilas.simbolos.w: 'arriba',
pilas.simbolos.s: 'abajo'
}
#El de abajo se mueve con j y l
teclas2 = {
pilas.simbolos.IZQUIERDA: 'izquierda',
pilas.simbolos.DERECHA: 'derecha',
pilas.simbolos.ARRIBA: 'arriba',
pilas.simbolos.ABAJO: 'abajo'
}
mi_control = pilas.control.Control(teclas) mi_control2 =pilas.control.Control(teclas2) aceitu.aprender(pilas.habilidades.MoverseConElTeclado, control=mi_control)
self.aprender(pilas.habilidades.MoverseConElTeclado, control=mi_control2)
paleta = Paleta(pilas)
pelota = pilas.actores.Pelota()
pelota.figura.escala_de_gravedad = 0
pelota.empujar(0, -10)
pelota.aprender(pilas.habilidades.Arrastrable)
pilas.colisiones.agregar(paleta, pelota, empujar_pelota)
pilas.ejecutar()
Desde ya muchas gracias, espero su pronta respuesta.
Matsimus Trolling