1 Archivos adjunto(s)
Blender ge python comando sleep
Muy buenas, hacia ya tiempo que no me pasaba por aquí. Bueno e caso es que estaba programando con logic brinks y Python para mí proyecto y se me ha dado el siguiente problema que paso a explicar:
El objetivo de todo es hacer que un Empty cree un objeto, y nada más crea el objeto, este se emparente con el propio Empty que lo ha creado. El caso es que crea el objeto, pero no lo emparenta. El código funciona bien por separado es decir si pruebo solo a crear el objeto o a solo emparentarlo funciona, el problema es cuando se tiene que hacer todo junto. Pienso que la solución puede estar en que se ejecute primero la parte en que crea el objeto y un medio segundo más tarde la parte en que se emparente, el caso es que no sé cómo.
He intentado con un bucle a ver si se solucionaba, pero nada, creo que el tiempo que tarda en ejecutarse es mínimo como para que funcione.
Luego intente usar el comando time, slep(segundos), pero creo que Blender no tiene ni idea de lo que le estoy contando. Así me quedó el código:
Código:
Import BGE.
Import time.
Def main():
Cont = BGE, logic, getcurrentcontroller().
Own = cont, Owner.
Sens = cont, sensors[inicio].
Actu = cont, Actuators[emparentar].
If sens, positive:
Time, slep (5).
Cont, activate (actu).
Else:
Cont, deactivate (actu).
También adjunto una imagen de los logics, gracias de antemano. Un saludo.
Blender ge python comando sleep
Yo de Python no se casi nada, pero en el logic brick, por la imagen que has puesto, lo que haces es emparentar el Empty a la malla, no la malla al empty.
(y explicas que quieres que el objeto se emparente al empty), perdona si no es eso. Saludos.
Blender ge python comando sleep
Acabo de volver probar lo que me has dicho, Solimán, por si acaso, pero está bien como lo he puesto, cuando lo pruebo por separado se emparenta la malla al Empty y funciona. Date cuenta que se emparenta el objeto del logic al que te pide que pongas para emparentar, no alrreves.
También lo he intentado hacer con la propiedad timer, pero no sé cómo funciona, alguna idea? Un saludo.
1 Archivos adjunto(s)
Blender ge python comando sleep
Bueno al parecer acabo de encontrar una solución, bueno, no lo llamaría solución más bien parche, pero al menos funciona.
La cosa ha sido que he probado a poner que el emparentamiento se active cuando una propiedad booleana asignada a la malla sea distinta, y al parecer se procesa a destiempo del proceso de crear la propia malla o algo así. El resultado es que se crea la malla y acto seguido se emparenta, funcionando perfectamente. Lo bueno es que ha bastado con logics solo, adjunto la imagen. Un saludo.
1 Archivos adjunto(s)
Blender ge python comando sleep
Puedes emparentar el objeto al empty, solo tienes que cruzar los dos objetos, subo un blend dónde están activos los dos layers, pero selecciona solo el primer layer, luego presionas leta p para entrar en el game, luego presionas barra espaciadora, para añadir un cubo a la escena (el cubo que está en el segundo layer) y luego presionas flecha izquierda para que se emparente el cubo al Empty y a la vez se mueva en eje x.
1 Archivos adjunto(s)
Blender ge python comando sleep
Acabo de ver el (*.blend) que has subido, Solimán, y tienes los logics puestos justo como lo puse yo, es decir el cubo se emparenta con el Empty por el logic del cubo de emparentar. De hecho, prueba a quitar el logic de emparentar que tienes puesto en el empty, te funciona igual. Es decir, que se emparenta el objeto en el que está el logic (siendo el hijo), con el objeto que te pide el propio logic que pongas para emparenta (este será el padre).
Posdata: te adjunto el (*.blend). Un saludo.
Blender ge python comando sleep
Una nota adicional: Blender ejecuta los scripts de manera secuencial. Esto implica que si haces slep() en un script el orden de ejecución de los scripts no va a variar, pues el motor no sigue funcionando hasta que no termina dicho script.
Nótese que no solos demás scripts no se ejecutan, si no que las físicas no siguen funcionando, hasta que el slep termine. Un saludo.