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.