SpecificActor

Esta entidad se utiliza para posicionar personajes secundarios en el escenario.
Parámetros de esta entidad:
ActorFile
Introducir aquí el nombre del fichero .act que quieras situar como personaje en el escenario.
Este fichero .act ha de estar en la carpeta 'Actors' de 'Entidad 3D'.
Nota: Si utilizas el editor de niveles 'World Editor Pro', los
nombres de los ficheros .act que indiques en este parámetro 'ActorFile', ponlos
con las extensión .ACT en mayúsculas (por ejemplo 'estatua.ACT') si quieres que el modelo 3D de este fichero
.act no aparezca en el editor y quieras que el propio editor funcione más rápido, ya
que si indicas la extensión .act del fichero en minúsculas (por ejemplo 'estatua.act')
verás una representación del modelo 3D con una sola textura pero si tienes muchas
entidades 'SpecificActor' en tu nivel, observarás que el editor se hace muy lento
a la hora de modificar cualquier elemento.
Motion
Nombre de la animación que queremos que realice este personaje. Este nombre ha de ser uno
de los nombres de animación que contiene particularmente cada fichero .act. Utiliza la utilidad
'Actor View' para ver los nombres de animación del .act que te interese.
La animación que seleccionemos se realizará de forma continua mientras este personaje
esté en el escenario.
ASpeed
Variando este valor podremos regular la velocidad de la animación que hemos establecido en 'Motion'.
Rotate X
Con 'True' haremos que el personaje realice una rotación continua sobre su eje X.
Rotate Y
Con 'True' haremos que el personaje realice una rotación continua sobre su eje Y.
Rotate Z
Con 'True' haremos que el personaje realice una rotación continua sobre su eje Z.
RSpeed
Variando este valor podremos regular la velocidad de rotación del personaje en el
caso que la hayamos establecido con Rotate X, Rotate Y o Rotate Z.
CommandsFile
Introduciremos el nombre del fichero de comandos .ini que contiene los comandos que deseamos procesar cuando
el jugador toque al personaje. Este fichero .ini ha de estar en la carpeta 'Comandos' de 'Entidad 3D'.
Boton_accion
Con valor 'True', los comandos contenidos en el fichero especificado en 'CommandsFile' se procesarán
si el jugador toca al personaje y al mismo tiempo pulsa el
botón o tecla 'Acción'.
Con valor 'False', sólo será necesario que el jugador toque al personaje para
procesar los comandos que contiene el fichero .ini que hemos especificado en 'CommandsFile'.
Origin
Son tres cifras (X Y Z) separadas por un espacio que determinan la posición de esta entidad en el escenario. Estos 3 datos
normalmente no se modifican aquí y se deja que se modifiquen según movemos esta entidad (con el ratón) desde 'World Editor'.
Orientation
Son tres cifras (X Y Z) que determinan la orientación que presentará el objeto en el escenario.
Variando estos tres ángulos (con valores entre 0 y 365 grados) podremos hacer aparecer nuestro
objeto o personaje boca abajo, tumbado, ladeado, etc..
Si ponemos 0 0 0 el objeto se presentará en la orientación inicial de diseño de este objeto 3D.

Ejes X Y Z en Entidad 3D
Scale
Son tres cifras (escala en X(ancho), escala en Y(alto), escala en Z(largo)) separadas por un espacio.
Permiten agrandar o reducir el tamaño inicial de nuestro personaje. Si ponemos 1
aparecerá en el escenario en el tamaño inicial de diseño de este objeto 3D. Si ponemos 2 aparecerá
el doble de grande. Si ponemos 0.5 aparecerá a la mitad de su tamaño.
Visible
Con 'False' haremos que este personaje no aparezca en el escenario. Esto se utiliza en casos en que
nos pueda interesar definir la posición de un personaje, pero que al dar comienzo el
juego aún no aparezca y que lo hagamos aparecer según el desarrollo de nuestro juego. Esto
último lo podremos hacer con el comando 'VIS1'.
Bloqueo_ver
Con valor 'True', nos aparecerá un rectángulo azul transparente que envolverá el objeto o personaje. Esta
zona azul es la zona de bloqueo para este 'actor' y representa el espacio que el jugador no podrá atravesar
mientras el 'actor' sea visible.
Tanto si este valor está como 'True' o como 'False', el jugador no podrá atravesar esta zona.
A continuación puedes ver un ejemplo de un tanque con este rectángulo azul activado:

Bloqueo_X Bloqueo_Y Bloqueo_Z
En estas tres cajas podemos especificar valores para variar la zona de bloqueo
(visible si pones 'True' en Bloqueo_ver), con el objetivo de modificar el tamaño que tiene esta zona por
defecto.
Si utilizas valores positivos aumentarás de tamaño la zona, mientras que si utilizar valores negativos
reducirás la zona.
Brillo
Con un valor que puede variar entre 0 y 255 podemos dar más o menos brillo al modelo 3D que represente
este 'SpecificActor'.
Bloqueo
Con valor 'True', el jugador colisionará con este objeto o personaje.
Con valor 'False', el jugador atravesará este objeto o personaje.
Con 'False' nos deja la libertad de poder controlar las zonas de bloqueo de este objeto mediante bloques que
definamos en el escenario (en World Editor) en el mismo punto donde tengamos situado el 'SpecificActor'.
Para que estos bloques realicen la tarea de bloquear al jugador pero que al mismo tiempo no se vean, debemos
acceder a las propiedades de todas las caras de ese 'brush' (ventana 'Faces Attributes'), marcar 'Transparent' y finalmente
poner el valor 0 en 'Transparency Value'.
Transparencia
De 0 a 255.
Nivel de transparencia del objeto o personaje.
255 opaco, 0 completamente transparente, 128 semi-transparente.
RenderSiNoVisible
Con valor 'False', si el modelo 3D .ACT no está a la vista del jugador, el
programa no realizará los cálculos necesarios para visualizar este modelo. Esto
permite aumentar ligeramente el rendimiento del programa en algunas ocasiones.
Con valor 'True', los cálculos para visualizar el modelo 3D .ACT se realizarán
siempre que el jugador lo tenga en frente, aunque delante del modelo haya una pared
que le impida verlo.
Intenta siempre poner este parámetro a 'False' si no causa algún efecto no
deseado en tu juego.
Una situación en la que no podrás poner este parámetro a 'False' es por ejemplo
cuando pones un 'SpecificActor' en tu nivel y en su interior has situado
un bloque sólido en 'World Editor' para que el jugador colisione con él. En ese caso
si pones 'False' en 'RenderSiNoVisible' nunca verás el modelo 3D, por lo que debes
poner 'True' para verlo siempre.
Consulta la sección 'Personajes' para ver un ejemplo de como añadir una entidad de este tipo.
Personajes interactivos:
Si no queremos que nuestros personajes sean simples 'estatuas' que no se relacionan con el
jugador, tendremos que asociar la entidad 'SpecificActor' de nuestros personajes con algún
fichero de comandos .ini para que realicen ciertas acciones según las circunstancias.
Lo que pueden hacer estos personajes lo determinan los comandos disponibles en 'Entidad 3D',
desde decirle algo al jugador (mediante un texto), hasta darle algo al jugador o hacer sonar
un fichero de audio con alguna voz grabada.
A continuación, y a modo de ejemplo, vamos a crear un fichero .ini en la carpeta 'Comandos' y que estableceremos
como nombre de fichero .ini en 'CommandsFile' para una entidad de este tipo. El fichero en cuestión contendría lo siguiente:
IF COND llave_entregada=0
IF COND 5_dinero.act=1
ACCI DIAL vende_llave
ACCI QINV 5_dinero.act
ACCI PINV 4_llave.act
ACCI PONE llave_entregada=1
ELSE
ACCI DIAL dame_dinero
ENDIF
ELSE
ACCI TEXT No tengo nada mas de tu interes
ENDIF
¿ Que hace todo esto ?. Lo que pretendemos hacer es que un personaje le venda una llave al jugador si este
lleva dinero en su inventario. Evidentemente, para este ejemplo necesitaríamos los objetos '5_dinero.act' (para
el dinero) y '4_llave.act' (para la llave). También vamos a preparar un par de respuestas por parte del personaje, una
para cuando le entregue la llave al jugador y otra para cuando el personaje le pida dinero al jugador a cambio de
la llave.
Estos diálogos han de estar en forma de ficheros en la carpeta 'Comandos' y con la extensión .dlg. Crearemos
el fichero 'vende_llave.dlg' conteniendo las líneas siguientes:
Gracias por tu dinero, te aseguro que lo has
empleado bien. Toma la llave del salon Rojo
y ten cuidado con los guardianes.
También crearemos el fichero 'dame_dinero.dlg' con lo siguiente:
Si estas buscando la llave del salon Rojo te
aseguro que no te saldra gratis. Aqui sin
dinero con conseguiras nada.
Ya estamos en condiciones de entender el grupo de comandos anterior.
Recordarte que estos comandos se procesarán sólo cuando el jugador intente tocar al personaje.
En primer lugar, decirte que utilizo la variable 'llave_entregada' (que me he inventado) para controlar
la entrega de la llave al jugador. De esta forma podré presentarle al jugador diversos mensajes en función
del valor de esta variable.
El primer 'IF', comprueba la condición 'llave_entregada=0', lo utilizo para, si no se cumple significará
que ya le hemos entregado la llave al jugador, pues le presentamos un mensaje rápido a través del comando
'ACCI TEXT' poniéndole 'No tengo nada mas de tu interes'. Este mensaje aparecerá en la parte superior de la
pantalla en azul y desaparecerá en pocos segundos. Como ves, para este mensaje no hemos creado un fichero .dlg ya
que opino que para un mensaje tan corto no era necesario.
Pero volvamos otra vez a la condición que estamos analizando pero esta vez supongamos que la condición
se cumple y la variable 'llave_entregada' vale 0 (que sería lo que valdría al comenzar el juego), pues entonces
aún comprobamos otra cosa más, ya que el jugador podría llevar el dinero o no. Si lo lleva la condición 'COND 5_dinero.act=1'
se cumplirá y por lo tanto se desencadenarán todos los comandos hasta el siguiente 'ELSE', comandos que hacen lo siguiente:
ACCI DIAL vende_llave
(pone en pantalla el diálogo que hemos preparado en el fichero 'vende_llave.dlg')
ACCI QINV 5_dinero.act
(quita el objeto '5_dinero.act' del inventario del jugador)
ACCI PINV 4_llave.act
(pone el objeto '4_llave.act' en el inventario del jugador)
ACCI PONE llave_entregada=1
(pone la variable 'llave_entregada' a 1)
Finalmente si no se cumple la condición 'COND 5_dinero.act=1' es que el jugador no lleva el dinero y por
lo tanto no le damos nada y con el comando 'ACCI DIAL dame_dinero' le presentamos el diálogo que tenemos
preparado en el fichero 'dame_dinero.dlg'.
Ya te estarás haciendo una idea de la cantidad de posibilidades que tienes con estos ficheros de comandos .ini,
y no sólo en entidades 'SpecificActor' sino en todas las entidades de 'Entidad 3D' que soportan estos ficheros.
Si combinas adecuadamente comandos y condiciones dentro de otras condiciones, etc... podrás obtener gran
cantidad de complejas situaciones que podrán adaptarse a las necesidades del guión de tu juego. Al principio te puede
parecer un poco liado, pero con la práctica, si ordenadas bien los comandos y los escalonas correctamente para
no ver toda una cascada confusa de comandos, verás que ni de lejos tiene la complejidad que te supondría
realizar lo mismo programando en lenguajes de programación.