Logic bricks message

Klópes - 09/04/2008 00:08
Estoy repasando el Game Engine y me he dado cuenta de que nunca he usado los sensores y actuadores de mensaje. En principio es fácil, un actuador manda un mensaje a 1 objeto o a todos, y los que llevan un sensor message lo detectan. Ahora bien, ¿cómo funciona lo de pasar información de las propiedades? Porque de mandar subject parece que no paso.
Pepius - 09/04/2008 00:23
A ver si puedo ayudar. Primero activas el botón t/p del actuator message, y pones el nombre de la propiedad cuyo valor quieres enviar.

Después, en el objeto que recibe, le pones el sensor message y lo unes a un controller Python. El script al cual enlazas puede coger los cuerpos del mensaje.
[code]import Gamelogic as gl.

Cont = gl.getcurrentcontroller().

O = cont, getowner().

Msg = cont, getsensor(sensor).

Body = msg, getbodies().
[/code]

Como ves (que te tengo que decir yo a ti de pitón), se almacena en body el valor, aunque no sé si será una string o qué. Un saludo.

Edito: me refiero a que no sé sí, aunque la variable sea un int, al pasarlo como cuerpo del actuador se humilde a string.
Klópes - 09/04/2008 09:02

A ver si puedo ayudar. Primero activas el botón t/p del actuator message, y pones el nombre de la propiedad cuyo valor quieres enviar.

Después, en el objeto que recibe, le pones el sensor message y lo unes a un controller Python. El script al cual enlazas puede coger los cuerpos del mensaje.
[code]import Gamelogic as gl.

Cont = gl.getcurrentcontroller().

O = cont, getowner().

Msg = cont, getsensor(sensor).

Body = msg, getbodies().
[/code]

Ah. Eso es trampa, así que, hay que hacerlo a mano, vaya. Sería más práctico escribir directamente en los ladrillos una propiedad de salida y otra de destino.

Entre las tareas que se proponen en el Apricot parece ser que, está mejorar los tetrabricks de mensajes. Me parece bastante urgente, creo que es una de las herramientas más potentes de los logic bricks.

Edito: me refiero a que no sé sí, aunque la variable sea un int, al pasarlo como cuerpo del actuador se humilde a string.

Vale, eso es lo de menos, he visto muchas cosas raras en el ge sobre tipos de propiedades.

Pues muchas gracias, jugón.
fisicomolon - 09/04/2008 11:13
Para pasar propiedades de un objeto a otro, yo lo hago mediante un script y usando variales globales. Según el código que habéis puesto antes, yo añadiría esto:
O, propiedad =0 # daría el valor 0 a una propiedad local llamada propiedad del objeto al que está conectado el script.

Gl.propiedad = 0 # daría el valor 0 a una propiedad global llamada propiedad que podría ser leída desde cualquier script conectada a cualquier objeto.
Klópes - 10/04/2008 11:29
Vaya. No se me había ocurrido usar variables globales. Es artificioso, pero está claro que funciona. Gracias.