Problemas con Colisiones/interpolaciones

Hola que tal,soy nuevo en pilas y primero queria felicitar a los desarrolladores por hacer este programa tan sencillo de entender y tan completo.
Tengo un pequeño problema con el tema de colisiones e interpolaciones.Para lograr que 1 actor colisione con mi protagonista tuve que hacerlo que imite el comportamiento de un rectangulo pero al hacerlo asi no me permite realizar interpolaciones,para tratar solucionarlo cree otro actor copiando el codigo
“self.figura_de_colision = self.pilas.fisica.Rectangulo(0, 0, 40, 90)” del actor “Auto” y me permite realizar interpolaciones pero no me permite colisionarlo.
Si podrian darme una mano seria de mucha ayuda ya que es para un trabajo de la universidad.
Muchas gracias

Hola @DarioStrk, es una buena pregunta, creo que en algún momento escribimos una respuesta relacionada con este tema, pero no pude encontrarla :confused:

La idea es así, en el momento que asigamos una figura física a un actor, y la figura no es un sensor, el actor comenzará a moverse de acuerdo a lo que la figura le diga… es como si la figura física tuviera el control completo de movimiento y rotación del actor. Así que no se puede modificar directamente.

Lo que sí se puede hacer, es mover al personaje indirectamente. Por ejemplo, podrías mover la figura y que el actor la siga.

Mirá un ejemplo, si tomo un actor como el mono y luego le asigno una figura circular, la única forma de moverlo es usando los atributos mono.figura.x, mono.figura.y o mono.figura.impulsar

» mono = pilas.actores.Mono()
» mono.aprender('rebotarComoPelota')
» mono.figura.y = 0
» mono.figura.y = 0
» mono.figura.impulsar(100, -100)
» mono.figura.velocidad_x = 0

Estas características se cuentan un poco mejor en el manual, sobre-todo en la sección física personalizada:

http://manual.pilas-engine.com.ar/fisica/

1 Like

Hola mira,estoy necesitando hacer que mis actores sigan un “patron” por asi decirlo de movimiento (osea es un juego de autos y tendrian que simular transito) y cuando intente “figura.impulsar” el actor sale volando para arriba y con “figura.x” no me deja usar listas :expressionless: se puede corregir esto? si queres te puedo copiar las definiciones de mis actores a lo mejor podes entenderme mejor si es que no me explico bien

Hola @DarioStrk, si, si podés enviame un detalle. ¿la idea sería que el auto se mueva solo?, siguiendo un recorrido, tipo calle no ?

Exacto,mira te paso una imagen del juego y las definiciones de mis actores y las funciones de colision

     class Chano(pilasengine.actores.Actor):
       def iniciar(self):
        self.imagen = "Autorojo.png"
        self.aprender('moversecomocoche')
        self.figura_de_colision = self.pilas.fisica.Rectangulo(0, 0, 40, 90)
        self.z = -10
    def actualizar(self):
        pass
    def obtener_velocidad(self):
        habilidad = self.obtener_habilidad('moversecomocoche')
        return habilidad.velocidad

   class Auto_movil(pilasengine.actores.Actor):

    def iniciar(self):
			self.imagen = "Autorojo.png"                			
			self.figura_de_colision = self.pilas.fisica.Rectangulo(0, 0, 40, 90)
			self.z = -10       					 			
    def actualizar(self):
        pass



    class Auto_estatico(pilasengine.actores.Actor):
    def iniciar(self):
			self.imagen = "Autorojo.png"               
			self.z = -10						
			rectangulo= pilas.fisica.Rectangulo(0, 0, 80, 180)
			self.aprender(pilas.habilidades.Imitar, rectangulo)
    def actualizar(self):
        pass




pilas.colisiones.agregar('Chano', 'Auto_estatico', aumentar_puntaje)

Al no tener asignada gravedad cuando uso actor.empujar el actor sale volando y si la idea seria que los actores simulen un trafico por las sendas para poder colicionarlo(por las dudas el nombre del juego es “El Juego de Chano” )

Me falta unicamente eso para terminar el juego,help! jaja

Hola @DarioStrk !!!, tal vez lo más sencillo sea eliminar el auto luego de unos segundos, o que desaparezca con transparencia, ¿no?

Fijate que dentro de la función que chequea la colisión podrías crear un efecto de golpe, reproducir un sonido y luego llamar a una tarea para eliminar el coche luego de unos segundos:

http://manual.pilas-engine.com.ar/tareas/

1 Like

El problema es que no puedo crear un actor que sea movible y pueda colisionar con el primer actor al mismo tiempo y me estoy quedando sin tiempo :confused:

Hola @DarioStrk, recién armé un ejemplo para mostrar cómo controlar a los actores con física:

Avisanos si te sirve de ejemplo para lo que estás buscando.

1 Like

Es Exactamente lo que necesitaba! Muchisimas gracias @hugoruscitti