You are on page 1of 199

Traducido por Javiusdey de desarrollodejuegos.com.

es y Marta Villaescusa
1. Instalación
En esta sección conseguiremos configurar Construct 2 (C2 en adelante) para hacerlo funcionar.
Nos centraremos en la descarga y actualización de C2, después en el proceso de instalación,
como usar tú licencia si la has comprado, y un recordatorio de los requisitos del sistema.

1.1 Conseguir Construct 2


Descargarlo de la web

Para descargar la última versión de C2 puedes visitar:


http://www.scirra.com/construct2/releases/new ⇗
Esta URL siempre te indicará la última versión. Te recomendamos siempre mantenerte
actualizado y usar la última versión de C2. Esto prevendrá encontrarse con problemas que ya han
sido resueltos. Hay 3 formas de ser notificado acerca de las nuevas versiones:

Notificaciones por email


Si quieres que se te notifique cuando se publique una nueva versión puedes inscribirte en nuestra
lista de mailing. Para hacerlo, inicia sesión en tu cuenta y visita tu página Yo (Me):
http://www.scirra.com/me ⇗ Marca la casilla Nuevas versiones de C2 (Construct 2 new releases)
debajo de tus subscripciones (Your subscriptions). Automáticamente te enviaremos un email
cuando una nueva versión sea publicada. No te enviaremos ningún otro mail distinto al de las
notificaciones de nueva versión si sólo has marcado esa casilla, y puedes cancelar la inscripción
en cualquier momento demarcando la misma casilla en tu perfil. ¡Nosotros también odiamos el
spam!

Alerta de actualizaciones en Construct 2

Si usas C2 en un ordenador conectado a internet, el propio C2 te avisará si hay alguna


actualización disponible. Normalmente esto es un poco lento –puede notificar unos cuantos días
después de la salida de la actualización. Puede cambiar tus preferencias en notificación de
actualizaciones en el diálogo de preferencias (Preferences dialog).

Actualizaciones en las redes sociales


Tenemos una página de Facebook, una cuenta de Twitter y una página de Google+. Si usas
alguna de estas redes puedes seguirnos o agregarnos. Publicamos actualizaciones en estas
páginas en cuanto salen, al igual que otras noticias que pueden interesarte.
Actualizaciones Beta
Los lanzamientos Beta de C2 no están muy preparados para el uso continuado, pero son lanzados
más pronto y con más regularidad que las actualizaciones estables. Si quieres ayudar a probar
estos lanzamientos Beta, bajo el riesgo de posibles virus o cuelgues, puedes encontrarlos en la
lista de lanzamientos (releases list ⇗) o configurar C2 para que te avise de las actualizaciones Beta en
el diálogo de preferencias (Preferences dialog)

1.2 Instalando Construct 2


Una vez descargado C2, la Configuración (Setup) empezará a instalarlo en tu ordenador. Clica Siguiente
(Next>) para seguir los pasos.

Tu navegador o Windows puede mostrar una advertencia de seguridad antes de comenzar la


Configuración (Setup). Debes comprobar si el editor está en la lista de Scirra Ltd antes de hacerlo
funcionar. Esto ayudará a asegurar que la configuración es la genuina de Scirra y no algo maligno editado
por terceras personas.

Instalación Portátil
Construct 2 puede usarse como software portátil. En otras palabras, puedes instalarlo en un disco externo
(como una memoria USB) y usarlo en cualquier ordenador. Si quieres hacer esto, coloca la carpeta de
instalación (Install) en tu disco externo.

Versiones de 32-bit y 64-bit


Hay dos versiones de C2, una de 32-bit (para ordenadores antiguos) y otra de 64-bit (para
ordenadores nuevos). Si no estás seguro de cual instalar puedes dejar que la configuración lo
detecte (auto-detect). Aunque, si lo has instalado en un disco externo, puedes querer instalar la
de 32-bit, ya que esta versión funcionará en ordenadores de cualquier tipo, no como la de 64-bit.

Cuentas de usuario limitadas


C2 todavía puede ser instalado en cuentas de usuario limitadas sin acceso administrativo. Esto es
común en lugares de trabajo, escuelas, universidades, bibliotecas y otros lugares de acceso
público. Podrás descargarlo e instalarlo con una cuenta limitada mientras no haya otras
restricciones en el lugar. En este caso la configuración (Setup) no podrá acceder a al directorio
de archivos de programa. En cambio, se instalará en una carpeta en tu cuenta de usuario. Otros
usuarios quizás tengan que instalar el software manualmente. Algunos sistemas incluso
desinstalarán el software cuando cierres sesión y tendrás que volver a instalarlo cada vez que
inicies sesión.
Si la configuración (Setup) falla debido a otras limitaciones (por ejemplo, no poder descargar
EXEs de internet) prueba con una instalación portátil. Instala C2 en un disco externo en un
ordenador donde puedas hacer funcionar la configuración (Setup) y prueba a hacerla funcionar
en el ordenador con limitaciones desde el disco.
Actualizaciones
Si ya tienes C2 instalado e intentas instalar una actualización, la configuración (setup) te ofrecerá
eliminar la última copia instalada de C2. Siempre debes eliminar la versión vieja a menos que
hayas instalado el programa dos veces (por ejemplo, en el ordenador y en el disco externo, en
cual caso la desinstalación podría eliminar la instalación portátil).

Desinstalación
C2 puede ser desinstalado a través de Añadir/Quitar programas (Windows XP) o Programas y
características (Windows Vista y nuevas versiones) en el Panel de Control

Instalaciones masivas
Si estás instalando C2 en muchos ordenadores, recuerda que la instalación es portátil. Esto
significa que no hay dependencia fuera de la Carpeta Archivos de Programa de C2. Puedes
instalarlo en varios ordenadores instalándolo en uno y copiando la carpeta de instalación (y
cualquier acceso directo que quieras) en otros ordenadores. Puedes usar también los siguientes
modificadores de línea de comando (command-line switches) para hacer funcionar la
configuración de forma automática:

construct2-setup.exe /SP- /SILENT /SUPPRESSMSGBOXES


Por defecto, también se añadirá un icono en el Menú de inicio.

1.3 Usar una licencia

Ver también: Tutorial de cómo funcionan las licencias de C2 How Construct 2 Licenses Work ⇗

Versión Gratuita de Construct 2


C2 puede ser descargado e instalado en cualquier ordenador de forma gratuita, incluyendo
aquellos de uso público y no comercial. Sin una licencia funciona como una versión gratuita.
Esta tiene las siguientes limitaciones:
 Un máximo de 100 eventos (events) en un proyecto (project)
 Un máximo de 4 capas (layers) en un plano (layout)
 Un máximo de 2 efectos (effects) en un proyecto (project)
 No hay organización en la carpeta de la barra del proyecto (Project bar)
 No hay búsqueda de acontecimientos (events)
 No hay Familias (families)
 No hay vista previa de LAN Preview on LAN ⇗
 No está permitido su uso con propósitos comerciales (aunque sí puede ser usado con
fines educativos y otras organizaciones sin ánimo de lucro)
Comprando la licencia eliminas todos estos límites. Las licencias pueden comprarse en
Scirra.com. Ambas licencias, la Standard y la Business quitan todas las restricciones anteriores.
La licencia personal (Personal license)
Todos los límites de la versión gratuita se eliminan con la Licencia Personal. De todas formas,
las reglas de usos comerciales son distintas para personas individuales y organizaciones.

Las personas individuales pueden usar una licencia Standard para usos comerciales hasta un
límite de 5000$. Si las ganancias asociadas a creaciones hechas con C2 superan los 5000$
(incluyendo publicidad/promoción asociada) se debe comprar una licencia Business, aunque no
es necesario comprarla hasta entonces.
Organizaciones sin ánimo de lucro, como escuelas, bibliotecas y universidades pueden usar
Licencias personales para eliminar las restricciones de la versión gratuita. Hay disponibles
descuentos para compras al por mayor.
Las Organizaciones Comerciales no pueden usar licencias Standard: deben comprar la Business.

La licencia Business (Business license)


La mayoría de las personas individuales no necesitan esta licencia. Sólo es necesario para:

 Personas individuales que ya han ganado 5000$ por creaciones hechas con C2 y
 Organizaciones comerciales y de negocios.
Las organizaciones sin ánimo de lucro nunca necesitan una licencia Business, sólo la Standard.

El archivo de la Licencia (License file):


c2license.txt
Una vez has hecho la compra, te enviaran una clave (redeem key) por email. Esta es un código
especial con el que poder entrar a la tienda de Scirra y conseguir la licencia. Si quieres comprar
una licencia para alguien más, puedes darle la clave y esa persona podrá conseguir otra licencia
de la tienda con su propio nombre y dirección de email. Esto también funciona si quieres
comprar licencias para un número indeterminado de personas, por ejemplo tus empleados o
compañeros: puedes recibir cierto número de claves, que puedes dar de forma individual.
Una vez has usado tu clave en la tienda de Scirra, puedes descargar tu licencia de C2, que es un
archivo llamado c2license.txt. Solamente necesitas copiar esta carpeta en el directorio de
instalación (install directory) o en mis documentos. Reinicia C2 y funcionará como la versión
licenciada: el nombre del comprador debe aparecer en la página de inicio y en el diálogo “Sobre”
(About), la versión gratuita debe desaparecer de la barra del título, y los límites deben
desaparecer. Así mismo, puedes colocar tu archivo de licencia donde quieras y localizarlo
clicando cargar el archivo de licencia (Load license file) en el diálogo “sobre” (About).
A menos que la licencia sea comprada por una organización, la licencia es para la persona y no
para el ordenador. Esto quiere decir que puedes usar tu copia licenciada de C2 en todos los
ordenadores que quieras, por lo que debes ser el único que lo utiliza. Otras personas deben
comprar su propia licencia. Recuerda que C2 puede ser usado como software portátil (ver
Instalando C2). Puedes poner tu archivo de licencia en un disco externo e instalar tu copia
licenciada en cualquier ordenador.
No debes modificar el archivo de licencia. Está protegido por un resumen criptográfico hash y
cualquier modificación podría causar que C2 rechace la licencia y vuelva a la versión gratuita.
¡No debes compartir tu archivo de licencia! Guárdala al igual que haces con el número de serie
para otros programas. Además el archivo de licencia contiene información personal, así que es
aconsejable mantenerlo en privado.

1.4 Requisitos del Sistema


C2 actualmente solo funciona en Windows. Por favor, ve a FAQ ⇗ para otros sistemas.
A pesar de que sólo funciona en Windows, el programa realiza juegos en HTML5 que pueden
funcionar en una gran variedad de ordenadores y dispositivos. Ve a la sección de Tecnología
(Technology) para más información.

Requisitos mínimos del sistema


 Windows XP Service Pack 3 o superior
 512MB RAM
 Procesador de 1GHz
 Un navegador compatible con HTML5 (ver abajo)
 La última versión de tu tarjeta gráfica (drivers)

Requisitos del sistema recomendados


 Windows 7 o superior
 2GB RAM
 Procesador 2GHz dual-core
 Una tarjeta gráfica nVidia o AMD con los últimos controladores (drivers). Te
recomendamos evitar el uso de hardware gráfico Intel debido a la pésima actuación,
estabilidad y características.

Los requisitos de sistema ideales


Puedes conseguir buenos resultados sin ellos, pero si puedes tenerlos sería lo mejor.
 Solid State drive (SSD) para el sistema operativo y el software
 Versión de 64-bit de Windows 7 o superior
 4GB RAM o más
 Una pantalla grande o configuración de monitor dual
 Una tarjeta gráfica nVidia o AMD con los últimos drivers, al menos 512MB de memoria
para video y soporte para OpenGL 2.0+
 Una conexión a internet de banda ancha

Navegadores compatibles con HTML5


Para previsualizar tus juegos en HTML5 necesitas un navegador compatible con HTML5. Los
navegadores se pueden descargar e instalar gratuitamente. HTML5 es una nueva tecnología, así
que es importante mantener tu navegador actualizado a la última versión. Los navegadores
compatibles son:
 Internet Explorer 9+ (sólo para Windows Vista o superior – Windows XP deben usar
otro)
 Mozilla Firefox
 Google Chrome
 Opera

Scirra recomienda Google Chrome o Mozilla Firefox.

2. Resumen
En esta sección ofrecemos un resumen de C2, incluyendo la página de inicio (start page), interfaz
(interface), estructura del proyecto, los dos formatos de guardado, exportación y publicación, la
tecnología de tus juegos y algunas buenas prácticas y consejos de actuación al usar C2.

2.1 Página de inicio


La primera vez que inicies C2 debes ver la Página de Inicio (Start page) que es algo parecido a
esto:

Esta te da un punto de partida útil siempre que inicies C2. Tiene algunos enlaces útiles como
Crear un nuevo proyecto, Nuevos tutoriales en la web, tus proyectos abiertos recientemente,
enlace a nuestro Facebook, Twitter y Google+ y demás.
Tutorial para principiantes
Si eres nuevo, quizás quieras echar un vistazo al enlace al Tutorial C2, Guía para principiantes
Beginner's Guide to Construct 2 tutorial ⇗. Este es una guía paso a paso para ayudarte a crear tu
primer juego.

Ejemplos
Si quieres examinar proyectos existentes para ver cómo funciona C2, puedes abrir las demos de
Space Blaster y Ghost Shooter. Estos son ejemplos avanzados así que no te agobies por sus
matemáticas o su complejidad. Sólo sirven para enseñar lo que C2 puede hacer en las manos de
un usuario avanzado.
Hay muchos ejemplos más simples en el directorio de ejemplos de C2. Clica Mostrar todos los
ejemplos (Browse all examples) para verlos. Hay más de 40 que muestran cómo hacer
plataformas simples y demos físicas.
Es altamente recomendable ver todos los ejemplos. Hay varios ejemplos de soluciones a
preguntas frecuentes como “¿Cómo configuro los controles comunes?” en la carpeta de
ejemplos.

Configuración
Puedes cambiar Mostrar la página de inicio cuando enciendas el ordenador Show (Start page on
startup) y Cerrar la página de inicio cuando cliques en algo (Close the start page when I click on
something) en el diálogo de preferencias (Preferences dialog).
2.2 La interfaz
El siguiente gráfico resalta las partes importantes de la interfaz de usuario de C2. También se
muestra un resumen de cada parte abajo, y más adelante el manual explica cada sección con
mayor detalle.

1: Menú de archivos (File Menu) y barra de herramientas (Ribbon Tabs)

C2 utiliza una barra de herramientas, similar a la Microsoft office 2007 o superior. El botón azul
con la flecha para clicar hacia abajo es el menú de archivos, y a su derecha hay una barra de
herramientas que se despliega con varios botones y opciones.

También hay una barra de acceso rápido con los cuatro comandos más usados: Guardar (Save),
Deshacer (Undo), Rehacer (Redo) y Vista previa (Preview). Puedes añadir o quitar botones de
esta barra: clicando la flecha hacia abajo pequeña que hay a la derecha. Si quieres tener muchos
comandos en esa barra puedes optar por mantenerla visible debajo de la barra de herramientas.

2: La vista del Plano


Es un editor visual donde puedes colocar objetos para diseñar niveles, pantallas de menú y
demás. Mira The Layout View.
3: Vista de pestañas

Estas pestañas permiten usar diferentes planos y hojas de actividades, para definir la secuencia
de actividades en las que se basa el juego.

Puedes clicar y arrastrar una pestaña para ver una al lado de otra en la misma pantalla.

4: La barra de propiedades
En esta barra puedes ver una lista de propiedades en las cuales ya has clicado. Puedes ver y
cambiar las propiedades de las cosas como planos, objetos, capas y demás. Mira The Properties
Bar.

5: La barra del proyecto y la barra de capa


Por defecto, la barra de proyecto y la de capa están etiquetadas aquí. La barra de proyecto
contiene un resumen de todo tu proyecto. La de capa puede usarse para añadir capas a un plano.

6: Pestañas de la Barra de proyecto/Barra de capa

Esta te permite alternar entre la barra de proyecto y la de capa.

7: Barra de objetos
Contiene una lista de objetos de tu juego. Puedes arrastrar y soltar objetos desde aquí para
colocarlos en el plano. El menú del botón derecho tiene varias opciones para filtrar o mostrar
diferentes objetos. Mira The Object Bar.

8: Barra de estado
En la parte de abajo de la ventana se encuentra la Barra de estado. Esta muestra:
 Qué está haciendo C2 durante una tarea de larga duración, como exportar o guardar un
proyecto.
 Cuantas actividades hay en el proyecto y su tamaño aproximado
 La capa activa en ese momento, que es la capa donde se colocaran los objetos
 La posición del ratón en planos combinados
 El nivel de zoom actual

9: Botones de la parte de arriba a la derecha

Al igual que los botones minimizar, maximizar y cerrar de Windows existe Fijar Barra (Pin
Ribbon) para mantener la barra siempre a la vista, y el botón “sobre” (About) para abrir el
diálogo About con información y los créditos de C2.
Personalización
Puedes personalizar la interfaz a tu gusto. Algunas de las barras pueden ser arrastradas y soltadas
en diferentes posiciones de la ventana. También puedes esconder barras para ahorrar espacio:
clica el icono de fijar (pin) de una barra y se convertirá en una simple pestaña. Puedes volver a
convertirla en barra.

Las barras se pueden esconder y mostrar en la pestaña Vista (View) de la barra de herramientas.

Puedes crear una pantalla dividida clicando y arrastrando uno de los planos u pestaña de hoja de
actividades en la vista principal. Esto es útil en monitores grandes.

2.3 Estructura del proyecto


Los proyectos de C2 consisten en los siguientes elementos. Se pueden acceder a ellos vía la
Barra del proyecto (Project Bar), que contiene un esquema de todos los elementos del proyecto.
Los elementos de la barra del proyecto se pueden organizar en subcarpetas (sólo la versión con
licencia) algo muy importante en medianos y grandes proyectos. Para más información, mira la
sección Proyectos Primitivos (Primitive Projects).

Planos (Layouts)
Niveles, menús, los títulos de las pantallas y otros planos de objetos predefinidos. En otras
herramientas Layout puede referirse a escenas, habitaciones, marcos o etapas.

Los planos también pueden estar formados por múltiples capas (Layers), que pueden usarse para
poner objetos en las capas de fondo y primer plano. Estos se manejan con la barra de capas
(Layers bar).

Hoja de eventos (Event Sheets)


Un conjunto de eventos (Events) definen la lógica del juego. En C2, los eventos son la
alternativa a programar o a crear la secuencia de comandos. Los planos tienen una hoja de
eventos asociada para darle lógica. Las hojas de eventos pueden ser reutilizadas en diferentes
planos que puedan incluir una hoja de eventos. La hoja de eventos se edita en la vista de hoja de
eventos (Event Sheet View).

Para más información sobre eventos, ve a la sección de Eventos (Events), especialmente a la


página Como funcionan los eventos (How events work).

Tipos de Objetos (Object Types)


Los tipos de objeto definen la “clase” a la que pertenece un objeto. Por ejemplo, EnemigoTroll
(TrollEnemy) o EnemigoOgro (OgreEnemy) pueden ser distintos tipos de objetos. Se pueden crear
distintos ejemplos para un objeto. Es decir, puede haber tres ejemplos para el tipo de objeto
EnemigoTroll (TrollEnemy) y 5 ejemplos para el tipo de objeto EnemigoOgro (OgreEnemy)
Es importante aclarar la diferencia entre tipos de objeto y ejemplos: son llamados de forma
distinta en el manual. Para más información, ve a las entradas Componentes (Plugins), Tipos de
objeto (Object Types) y ejemplos (Instances).

Los tipos de objeto pueden agruparse en familias (Families).

Sistema de Objetos (System object)


El sistema de objetos representa la funcionalidad en C2. Es lo único existente en un proyecto
vacío. No puede añadirse de nuevo ni ser quitado de un proyecto. No hay ejemplos para el
sistema de objetos: está siempre presente y provee el acceso a los aspectos del motor de C2. Sus
condiciones, acciones y expresiones están documentadas en el sistema de referencia (System
reference).

Sonido y Música
Son archivos de audio usados para efectos sonoros y música en el juego. Los sonidos deben
usarse para efectos de corta duración que suenan cuando un acontecimiento como una colisión o
explosión ocurre. La música se usa para pistas musicales más largas. Es importante organizar los
archivos de audio porque los sonidos se descargan antes de poder escucharlos, pero la música es
en streaming. Esto significa que si una pista de música se pone en la carpeta Sonidos, tendrá que
descargarse completamente (lo que tardará unos minutos) antes de reproducirlo. Además el audio
de la carpeta Música puede reproducirse inmediatamente porque es en streaming.

Ambos, sonidos y música deben estar disponibles en los formatos Ogg Vorbis (.ogg) y MPEG-4
AAC (.m4a). Esto es porque los navegadores no se ponen de acuerdo en un solo formato para
web, ¡así que todos los audios deben estar en los dos formatos! Internet Explorer y Safari usan
archivos .m4a y el resto (Firefox, Chrome y Opera) usan archivos .ogg. C2 ayuda a convertir
audio a ambos formatos cuando se importan los archivos de audio. Ve al Diálogo de Importar
Audio (Import Audio dialog) y Sonido y Música (Sounds & Music) para más información.

Archivos de Proyecto (Project Files)


Cualquier archivo externo puede ser importado al proyecto. Para más información, ve a Project
Files.

Unidades comunes
A veces, en C2 necesitas introducir valores como ángulos, velocidades o tamaños. Para que haya
cierta consistencia, C2 siempre usa las mismas unidades, excepto donde se especifique otra cosa
en notas o descripciones mostradas en el editor. Las unidades comunes se describen a
continuación.
Posiciones (Positions) se miden en píxeles. El origen (0,0) está arriba a la izquierda del plano y
el eje Y aumenta hacia abajo (como es habitual en los motores del juego)
Tamaños (Sizes) se miden en píxeles
Ángulos (Angles) se miden en grados. Los 0 grados empiezan a la derecha y se abre en el sentido
de agujas del reloj
Tiempos (Times) se miden en segundos
Velocidades (Speeds) se miden en píxeles por segundo
Aceleraciones (Accelerations) se miden en píxeles por segundo
Índices que empiezan en 0
Para ser coherente con el lenguaje de programación, todas las características de C2 usan un
número de cosas de una lista (índices) que empiezan desde 0 en vez de 1. Esto puede parecer
complicado al principio y te costará acostumbrarte, pero en muchos casos esto es mucho más
conveniente que las listas que empiezan en 1.

Tradicionalmente las listas son numeradas 1, 2, 3… pero en C2 (y otros lenguajes de


programación) se numeran 0, 1, 2…

2.4 Guardar y compartir proyectos


Hay dos tipos de proyecto en los que puedes guardar tu trabajo. Ninguno afecta la funcionalidad
del juego, pero tienen ciertas ventajas y desventajas durante la edición. Debes elegir uno de los
tipos cuando crees un proyecto nuevo.

Carpetas de proyectos (Folder projects)


Los proyectos pueden guardarse en una carpeta. Esto almacena diferentes partes del proyecto en
diferentes archivos. Por ejemplo, cada plano se guarda en archivos separados en la subcarpeta de
Planos (Layouts).

Las carpetas de proyectos se guardan y cargan rápidamente. Esto las hace apropiadas para
medianos y grandes proyectos.

Las carpetas de proyecto son buenas para trabajos en colaboración con un equipo, porque es fácil
para distinta gente trabajar en diferentes archivos de proyecto y más tarde, fusionarlo.

El archivo de proyecto principal tiene la extensión .caproj. Nota que este no contiene el proyecto
completo: es solamente una lista de otros archivos usados en el proyecto. Si quieres compartir un
proyecto, el archivo .caproj es inútil por si solo – guarda a un único archivo de proyecto (.capx)
en su lugar.

Archivo de proyecto único (archivos .capx ) (Single-file projects (.capx files))


Los proyectos guardados en un solo archivo son más convenientes para proyectos pequeños.
Sólo hay un archivo para enviar, subir o compartir. Aunque se guardan y cargan más despacio
debido a que C2 tiene que unir y dividir el proyecto de un solo archivo. También es más difícil
para colaboraciones que si estuviese guardado en una carpeta.

Los archivos .capx son un simple ZIP de la carpeta de proyecto. Puedes renombrar un archivo
.capx con .zip para ver los archivos del proyecto.
Convertir entre tipos
Es fácil convertir un archivo de proyecto único a una carpeta de proyecto que al contrario en C2.
Simplemente abre un proyecto y elige Archivo - Guardar como Proyecto… (File - Save As
Project...) para guardarlo en un único archivo de proyecto.

Ya que los archivos .capx son ZIPs de la carpeta de proyecto, pueden también ser convertidos en
una carpeta de proyecto renombrándolo como .zip y extrayendo la carpeta de proyecto que está
dentro. De igual manera, una carpeta de archivos puede convertirse en un archivo .capx
comprimiéndolo en un archivo .zip y cambiándole la extensión a .capx.

2.5 Pruebas y publicación


Probando tu juego
Para probar tu juego durante su desarrollo puedes hacer una vista previa clicando “play” en la
barra de acceso rápido o barra de herramientas, presionando F5 o clicando el botón derecho del
ratón en un plano en la Barra de Proyecto y seleccionando Vista Previa (Preview). Esto usa un
servidor local para mostrarte la vista previa de tu juego.

Si tienes móvil, tablet o otros portátiles/ordenadores donde quieres probar el juego, hacer la vista
previa usando tu red local (wifi) puede ser fácil. Para más información, mirar el tutorial Como
hacer una vista previa en tu red local How to preview on a local network ⇗.

Debes exportar (export) y publicar (publish) el proyecto antes de poder jugarlo. No puedes
compartir la URL en internet durante la vista previa.

Exportar
Para exportar tu proyecto, usa el Menú de archivo (File Menu), barra de herramientas o barra del
proyecto (Project Bar) para abrir el diálogo de exportación del proyecto (Export Project dialog).

Si estás interesado en los detalles técnicos al exportar el proyecto, mira la sección Tecnología
(Technology).

Distribución del Proyecto


C2 hace juegos en HTML5. Hay muchas formas de publicar y distribuir juegos HTML5. Esto
incluye Scirra Arcade ⇗, Chrome Web Store ⇗, Facebook ⇗ y más. La sección de tutoriales de
la web Scirra.com Tutorials section ⇗ habla sobre todas estas opciones y todas están resumidas
en Publicitar y promocionar tu juego de C2 Publishing and Promoting your Construct 2 game ⇗.
2.6 Tecnología
C2 crea juegos HTML5. Estos funcionan online en navegadores web de gran variedad de
dispositivos y sistemas operativos, incluyendo dispositivos móviles como teléfonos y tablets,
asegurándonos que tu juego es accesible a la mayor cantidad de gente posible. Esta sección es un
resumen de la tecnología usada para ello. Esto puede ser de interés para gente que le guste la
tecnología y te lo puedes saltar si estás más interesado en saber cómo usar C2.

Navegadores Web (Web Browsers)


Un navegador es el programa que carga y muestra páginas web en tu ordenador. Los más
populares son:
 Internet Explorer ⇗ (solo la versión 9 o superior funciona con HTML5)
 Mozilla Firefox ⇗
 Google Chrome ⇗
 Opera ⇗

Los Macs también suelen usar Safari ⇗. Algunos de estos navegadores también están disponibles
para móviles y tablets.

HTML5
HTML ⇗ significa HyperText Markup Language. HTML es la manera estandar en la que se
hacen las páginas web desde los inicios de internet. HTML5 ⇗ es la quinta revisión de HTML y
empezó a ganar fama y difusión en 2011. Introduce algunas nuevas características, pero solo un
pequeño número de ellas atañe a los juegos. De todas formas, “HTML5” es todavía el más
apropiado para la tecnología usada por C2. Javascript es el lenguaje de programación estándar
usado para programar webs y también se usa para los juegos de C2.

De particular interés en HTML5 es la nueva etiqueta <canvas>. Esta crea una superficie
rectangular en las webs HTML donde cualquier imagen o contenido puede ser dibujado. Esto es
ideal para juegos. Todos los juegos de C2 usan canvas HTML5 para mostrar el juego.

HTML5 es compatible con la tecnología de Adobe Flash que domina los juegos de internet desde
2011. HTML5 se diferencia por ser algo así como un acuerdo de empresas, más que un producto
controlado por una única compañía como Adobe. Flash también funciona como plugin de
navegador, que debe ser descargado e instalado de forma separada mientras que HTML5 está
dentro del navegador. Esto significa que los juegos HTML5 pueden funcionar en dispositivos
donde no hay soporte para Flash, como iPhone y iPad. Dadas sus ventajas, HTML5 reemplazará
a Flash en la web.

Javascript
Javascript ⇗ es el lenguaje de programación estándar para web. Permite que las páginas web
sean más interactivas trabajando en cierto modo como aplicaciones tradicionales. Esto también
es un acuerdo entre empresas.

Javascript no es Java. Son dos lenguajes de programación no relacionados que tienen un nombre
similar. Java trabaja otra tecnología para las webs, una totalmente distinta a la de javascript.
Intenta no confundir ambos términos: los juegos de C2 no necesitan java para funcionar.
Navegadores modernos compilan Javascript a códigos de ordenador (o instrucciones de CPU).
Esto asegura que las webs (incluyendo juegos) que usan Javascript funcionan de la forma más
rápida y eficiente posible.

Javascript es un tipo de lenguaje que acumula basura, por lo que hace que los juegos se
entrecorte o se pause. Los juegos de C2 están optimizados para crear la menor cantidad de basura
posible, reciclando objetos donde es posible. Incluso objetos enteros son reciclados si son
destruidos y recreados. Esto ayuda a mejorar la actuación y asegura que el juego funcione lo más
fluidamente posible.

Plugin y comportamiento SDK


Los programadores de Javascript pueden extender C2 con sus propios Plugins y
comportamientos. Mira Javascript SDK documentation para más información.

Lienzos Canvas
El <canvas> de HTML5 tiene dos formas de dibujar el juego en la web: un simple contexto en
2D y el contexto WebGL, basado en OpenGL. WebGL es dos veces más rápido que 2D y tiene
más características, incluyendo efectos de soporte, pero no funciona en todas las plataformas. La
mayoría de los navegadores funcionan con WebGL, pero no Internet Explorer. C2 funciona con
las dos tecnologías. WebGL puede ser habilitado o deshabilitado para cada juego en las
propiedades del proyecto (Project Properties). Generalmente, es recomendable habilitarlo,
porque el juego funcionará más rápido y los efectos no funcionan sin él. Si el ordenador o
dispositivo del usuario no puede usar WebGL o éste está deshabilitado, C2 volverá al contexto
2D. En este caso el juego puede seguir jugándose, pero funcionará un poco más lento y no se
verá tan bien.

Ya que Internet Explorer no soporta WebGL, si lo usas sería mejor cambiar de navegador como
Firefox o Chrome. Quizás también quiera avisar a los usuarios de que hagan lo mismo.

WebGL puede no funcionar en un ordenador aunque esté habilitado. En este caso el contexto 2D
funcionará en su lugar. Puedes comprobar que lienzo está usando el juego con la expresión del
sistema lienzo (renderer), que puede ser “canvas2d” o “webgl”.

Oscurecimiento y empequeñecimiento
El código Javascript de tu juego está minimizado y oscurecido con el Closure Compiler ⇗ de
Google. Esto reduce el tamaño y lo hace extremadamente difícil de modificar para otros usuarios.

Las imágenes del juego están comprimidas en PNG. También están comprimidos al exportar
para asegurar que la descarga es lo más pequeña posible. Para más información, mira este post
Image compression in Construct 2 ⇗.

Audio
El motor del juego de C2 soporta Web Audio API en Google Chrome para play-backs de baja
latencia o efectos de sonido. En otros navegadores se usa el estándar de audio HTML5.

Soporte Offline
A pesar de que los juegos HTML5 funcionan en un navegador web, los juegos C2 usan el
HTML5 AppCache para permitirles funcionar también offline. Esto es útil para aplicaciones iOS
y Chrome, ya que algunos usuarios quizás utilicen el juego offline. También el AppCache ayuda
a ahorrar ancho de banda en los servidores que hospedan el juego: los archivos del juego solo
serán descargados una vez y cada visita después el juego se cargará desde el disco local
(mientras se buscan actualizaciones). Mira el tutorial offline support in Construct 2 ⇗ para más
información. Lo más importante es que tu servidor debe estar configurado para archivos
.appcache con el tipo MIME text/cache-manifest si no el soporte offline no funcionará y
malgastarás mucha banda ancha.

2.7 Buenas Prácticas


¡Haz copias de seguridad a menudo!
Ni el hardware ni el software de tu ordenador son perfectos. Los ordenadores fallan y el software
puede estropearse. Hacer copias de seguridad de tu proyecto te protege de perder todo tu trabajo.
Es esencial mantener las copias seguridad fuera del ordenador. Si todas tus copias están en el
mismo ordenador o guardadas en discos en el mismo lugar, eventos catastróficos como fuegos,
inundaciones, robos o fallos simultáneos de hardware pueden causar la pérdida total de todo tu
trabajo y copias de seguridad.

C2 tiene características para hacer copias de seguridad fácilmente, incluyendo copias externas
usando Dropbox. Para más información ve al tutorial Keep your work safe with Construct 2's
backup options ⇗.

Este consejo no es solo para C2. Es vital adoptar estas prácticas para todos tus trabajos
importantes. No esperes hasta haber perdido tu trabajo para empezar a hacer esto. La gente
pierde trabajos a menudo por no realizar esto. ¡No seas uno de ellos!

Comprueba en varios navegadores y dispositivos


Es altamente recomendado probar si tu juego funciona debidamente en varios navegadores.
Aunque HTML5 es el estándar y en teoría funciona en todos los navegadores, en la práctica hay
algunas variaciones entre navegadores (por ejemplo en actuación, características, renderización
de textos, etc.) Debes instalar varios navegadores y probarlo para asegurar que tu juego le
funcionará a todo el mundo. Usa la vista previa en navegadores (Preview browser) para probar
los navegadores fijos y la vista previa en redes locales (preview on a local network ⇗) para probar
los navegadores móviles.

Haz uso de pantallas táctiles también


Muchos usuarios tienen pantallas táctiles sin ratón ni teclado. Si es posible, debes diseñar tu
juego para poder ser usado en estos dispositivos con controles de toque de pantalla. Para más
información, ve al tutorial touch controls ⇗.
Formatos de archive recomendados
Quizás desees crear dibujos o audio en otros programas antes de importarlos a C2. Los mejores
formatos para ello son:

32-bit PNG para imágenes. Asegúrate de elegir 32-bit si tienes elección, la versión de 8-bit o
inferior son de peor calidad. Los PNG de 32-bit no tienen pérdidas y soportan el canal de
transparecia alfa (alpha-channel transparency). Nótese que el Paint de Windows no soporta la
transferencia PNG. Usa un editor distinto al Paint, como Paint.NET ⇗.
Puedes elegir diferentes formatos de salida en C2, como JPEG, para reducir el tamaño de tu
proyecto finalizado. Aunque cuando exportas debes mantener el PNG de 32-bit si es posible, y
dejar que C2 los recomprima. Para más información ve al post Image compression in Construct 2
⇗.

16-bit PCM WAV para audio. Estos son los típicos archivos .wav, pero nota que no todos los
.wav son de 16-bit PCM. Suponiendo que estés usando Windows 7 o superior, al importar un
archivo .wav de 16-bit PCM a C2 éste se encodeará automáticamente a los dos AAC y Ogg
Vorbis, los dos formatos necesarios. Para más información ve a la sección del manual Import
Audio dialog.

Seguridad
Nunca jamás escribas nombres de usuario o contraseñas en los eventos. Estos serán visibles
como texto plano en Javascript, y usuarios maliciosos podrán controlar tu cuenta fácilmente. Si
necesitas conectarte a algo como una base de datos, escribe el script que se ejecuta en el servidor
y conecta con la URL o el servidor.

Rendimiento
Hay un gran número de consejos sobre el rendimiento del juego (garantizando que el juego
siempre funcionará rápido). Lo más importante es cuando se desarrolla para móviles, hay que
probar el dispositivo móvil desde el principio. Tu ordenador funcionará 10 o 20 veces más
rápido que un móvil, y algo que funciona muy rápido en tu ordenador puede no ser imposible de
jugar en el móvil por su lentitud. Para más información Performance Tips.

Uso de memoria
Algunos diseñadores están tentados a diseñar niveles enteros como simples imágenes grandes,
por ejemplo 10000x10000 píxeles. Este método debe evitarse a toda costa. No es sólo que
malgaste memoria, si no que muchos dispositivos no soportan imágenes tan grandes, por lo que
no funcionará. Generalmente el mayor tamaño que soportan todos los sistemas (incluyendo
móviles) es de 2048x2048 píxeles. De todas maneras, evita imágenes de ese tamaño también, lo
más apropiado es usar fondos adosando imágenes de tamaño medios como 512x512 que cubran
todo el plano. Después, compón el diseño de nivel adosando varios objetos. Cada objeto puede
ser estirado y rotado individualmente lo que evitará una apariencia repetitiva.

Imagina una sola imagen de 10000x10000 que usa 400mb de memoria, que dejaría sin espacio a
los ordenadores más potentes. Por otra parte, un nivel compuesto por 512x512 fondos adosados
y 50 objetos diferentes de un tamaño de 200x200 usaría menos de 20mb de memoria. Sería
perfecto para encajar en la memoria de los móviles.

Efectos
Recuerda que los efectos requieren WebGL para funcionar, que no es soportado en todos los
ordenadores. Asegúrate de configurar recursos apropiados y probar tu proyecto con WebGL
deshabilitado para que se vea bien en los sistemas de otros usuarios que no puedan usarlo.

Manejar proyectos
Si trabajas en grupo, probablemente encuentres muy útil el software de control SVN para
manejar las carpetas del proyecto. Éste puede destacar y fusionar los cambios que cada persona
hace. También hay un historial de todos los cambios y restauraciones hechos en todo momento.
C2 guarda los datos del proyecto en formato XML así que es apropiado para este control.

Trabajar de forma individual


Si estás trabajando tú solo, es probable que sea más fácil usar archivos de proyecto únicos
(archivos .capx). Si el proyecto se alarga, C2 tardará más tiempo en guardar y cargar proyectos
(mostrará Decompressing CAPX... o Compressing CAPX en la barra de estado). Llegados a este
punto es útil convertirlo en una carpeta de proyecto que se salta este paso y hará que guardar y
cargar sea más rápido.

2.8 Consejos de actuación


Móvil
Los ordenadores modernos son muy potentes. El principal problema es hacer funcionar tus
juegos correctamente en tablets y móviles. Es más difícil conseguir buenos resultados en estos
dispositivos debido a que:
 Tienen un hardware más débil: CPUs, y chips gráficos más lentos y menos memoria.
 Javascript funciona más lento en ellos
 Algunos dispositivos sólo usan software de renderización, haciendo muy lento el dibujo
de gráficos.

Debes probar tu juego en móviles desde el principio. Tu ordenador es unas 10 veces más rápido
que tu móvil. Para evitar sorpresas haz pruebas regulares para comprobar la velocidad. La
característica Preview on LAN ⇗ puede hacer esto fácil y rápido. Tu propósito debe ser crear
juegos simples para los móviles y tener menores expectativas de índice de frames (30 FPS es un
buen objetivo para móviles).

Estos 3 consejos te ayudaran a conseguir un mejor rendimiento del juego en móviles:


1. Activa “Pixel rounding” poniéndolo en “On” en las Propiedades del Proyecto (Project
Properties). Esto evitará dibujar objetos entre píxeles, que pueden ralentizar el juego en algunos
dispositivos.
2. Evita usar demasiados objetos o efectos de partícula, ya que los móviles tienen un límite más
bajo.
3. Posiciona objetos usando la misma combinación o efecto en la misma capa. Por ejemplo, si
tienes muchos objetos que usan la Adición (Additive) para combinarse (comúnmente usado para
explosiones, lasers y otros efectos) asegúrate de que todos ellos están situados en su propia capa
(de Adición). Asegúrate también de que el objeto se crea en esa capa si éste se genera en tiempo
de ejecución. Alternar entre efectos reduce el rendimiento, y haciendo esto te aseguras de que
objetos que usan el mismo efecto se dibujan a la vez.

Exportando vía CocoonJS ⇗ o directCanvas ⇗ puedes mejorar el rendimiento en Android y iOS


si el navegador del dispositivo es lento.

El rendimiento de los móviles mejorará con el tiempo, así que si ahora tienes problemas, los
dispositivos futuros o las actualizaciones lo mejorarán.

Causas comunes de bajo rendimiento


Algunas de las causas de esto están listadas aquí. No es una lista exhaustiva y puede haber otras
razones no listadas aquí para que tu juego vaya muy lento.

Demasiados objetos que usan Físicos (Physics)


El comportamiento físico es muy intensivo en la CPU. Usar demasiados objetos así puede causar
una bajada de velocidad. Debes diseñar tus juegos para usar unos pocos objetos que usen físicos
grandes en vez de muchos pequeños.

Crear demasiados objetos


Aunque los ordenadores modernos son muy rápidos, todavía tienen muchas limitaciones en la
capacidad de procesamiento. Crear más de 1000 objetos causará probablemente un descenso en
la velocidad. Intenta diseñar usando los mínimos objetos posibles. El contador de objetos
(objectcount) te indicara cuantos estás usando.

Usar demasiados efectos


Los efectos son impactantes a la vista, pero pueden hacer más lento el juego si los usas
demasiado, especialmente en móviles. Usar un efecto en objetos con muchos ejemplos es
especialmente lento – a menudo es más eficiente situar todos los objetos con ese efecto en la
misma capa y aplicar el efecto directamente en la capa. Esto permite al efecto procesar todo de
una vez, en vez de hacerlo una y otra vez en un solo objeto.

Uso innecesario de efectos


Nunca usas efectos para uno estático en un objeto. Por ejemplo, no uses “escala de grises”
(“Grayscale”) para hacer que un objeto aparezca así siempre. Esto ralentizará el rendimiento,
cuando puedes importar el objeto directamente en escala de grises y no usar ningún efecto.

Usar demasiadas partículas


El objeto de partículas (Particles object) puede crear cientos de partículas. Cada una es como un
objeto pequeño, así que usará capacidad de procesamiento. Evita usar más de un par de cientos
de partículas para ordenadores. Se recomienda evitar su uso para móviles siempre que sea
posible; si los usas, usa el mínimo necesario con las tasas más bajas que puedas. Usa el contador
de partículas (ParticleCount) para saber cuántas has creado.

Usar objetos pequeños (Sprites) en vez de fondos adosados


Crear demasiados objetos puede ralentizar el juego y un error común es usar cuadrículas de
objetos pequeños (Sprites) en vez de fondos adosados. Por ejemplo, una cuadrícula de Sprites de
20x20 tiene 400 objetos, que es bastante. Un único fondo adosado puede reemplazar la
cuadrícula y cuenta como un solo objeto. Éstos optimizan unas 400 veces al repetir texturas.
Úsalos siempre que sea posible.

Usar un navegador lento


A veces, el lento Canvas 2D puede ser acelerado por el hardware de la tarjeta gráfica del
ordenador. Otras veces, sin embargo, no se acelera y usa un software muy lento. No hay una
forma fácil de explicarlo, pero esto es debido al peor rendimiento de un sistema. Comprueba en
ordenadores distintos para ver si hay diferencias y asegúrate de tener actualizados los drivers de
tu tarjeta de memoria.

Usar demasiados bucles (loops)


Esto es menos común, pero usar muchos bucles como para (for), para cada (for each) y repetir
(repeat) puede causar una bajada de velocidad. Bucles anidados son más propensos a esto. Para
probar si hay problemas, intenta deshabilitar temporalmente estos bucles.

Confusiones comunes
Las siguientes confusiones suelen ser acusadas de afectar el rendimiento (como en los tiempos
de ejecución), pero el efecto no es muy grande o directamente no hay:

Formatos de imagen (por ejemplo, JPEG, PNG-8, PNG-32) afectan el tamaño al descargar pero
no afectan al tiempo de ejecución (se descomprimen todos en 32-bit en el programa).

Formatos de Audio solo afectan al tamaño al descargar pero nada más.

El Número de capas normalmente no afecta, a menos que la mayoría de las capas hayan
cambiado su opacidad, tengan efectos aplicados, tengan un modo de fusión distinto a “Normal” o
usen “forzar una textura” “force own texture”. Así que no hay problema en usar muchas capas
con una configuración por defecto.

El Número de Planos no tiene más efecto que el tamaño de descarga.

Tamaño, ángulo u opacidad de sprites/fondos adosados y posiciones flotantes (por ejemplo,


situar un objeto en X=10,5) no tienen efecto cuando se usa la aceleración del hardware. Las
tarjetas de memoria modernas suelen renderizar un objeto a la misma velocidad sin tener en
cuenta si es grande o pequeño, el ángulo, opacidad o posición. Aunque, si sólo se usa el
software, puede tener gran impacto en el rendimiento, asegúrate de probarlo en diferentes
sistemas.

WebGL
WebGL ayuda a que el juego vaya más rápido: WebGL es unas 2 veces más rápido que Canvas
2D así que, para mejorar la ejecución, asegúrate de que está habilitado en las propiedades del
proyecto (Project properties) Aunque WebGL no es siempre soportado, por lo que esto no es
garantía de que el juego vaya a usar WebGL. Usa la expresión del sistema Lienzo (Rederer) para
determinar cual usar.
Hay muchas razones por las que WebGL no es soportado, aquí una lista:

 El navegador puede no soportar WebGL. Por ejemplo, Internet Explorer actualmente no


lo soporta y usa Canvas 2. Para mejorar el rendimiento, intenta cambiar a otro
navegador que sí lo soporte.
 Tus drivers de la tarjeta gráfica pueden no estar actualizados. Para garantizar el
funcionamiento, algunos navegadores deshabilitan WebGL si la tarjeta gráfica está
desactualizada.Actualizarla eliminará el problema.
 Simplemente tu ordenador es demasiado antiguo o usa hardware que no lo soporta. Si es
posible, actualiza tu tarjeta y el resto del hardware. Aunque no debes olvidar que puede
seguir funcionando con Canvas 2, solo que más lento.

Más consejos
Para más información y consejos, mirar el post Optimisation: don't waste your time ⇗.

Medidas y pruebas
Desde el principio tu proyecto debe usar un indicador de índice de frames (framerate indicator) y
controlar el rendimiento. Esto te permite notar si, haciendo algún cambio, éste afecta al
rendimiento.

Prueba tu proyecto en el máximo número de sistemas y navegadores posible.

Si crees que algo está causando problemas de rendimiento en tu trabajo, es fácil comprobar tu
teoría: haz una copia de seguridad, borra lo que pienses que está afectando y mira si el índice de
frames ha mejorado. Si es así, lo que has borrado era la causa, si no debe ser otra cosa.

Mide siempre el rendimiento. Los sistemas de un ordenador son muy complejos, y hay muchos
resultados y cambios inesperados en su rendimiento. La única forma de saber qué efecto tiene
algo sobre el rendimiento es medirlo. Si no puedes medir la diferencia, entonces el efecto no es
significativo.

Como medir el rendimiento


Hay dos expresiones del sistema (system expressions) que determinan el rendimiento:

Fps – da la tasa de frames por segundo. Normalmente la velocidad máxima es de 60 frames por
segundo, pero puede cambiar dependiendo del sistema.

Lienzo (Renderer) - con canvas2d o webgl. WebGL es dos veces más rápido, pero solo funciona
en ordenadores y no en todos los navegadores. Para más información, mirar la sección
tecnología.
Puedes mostrar los dos en un objeto de texto (Text object) para echarle un vistazo al rendimiento
mientras pruebas el juego, usando la acción:

Configurar texto a: fps & “ FPS (“ & renderer & “)”

Esto siempre mostrará unos 60 FPS (webgl) indicando ambos, el índice de frames y el lienzo.
3. Interfaz
Esta sección trata sobre la Interfaz de usuario. Para un resumen ve a Resumen de Interfaz, de la
sección anterior.

3.1 File menu


Al menú de archivos de C2 se accede clicando el botón azul de la parte de arriba a la izquierda
de la barra de herramientas.

Los objetos abiertos recientemente aparecen a mano derecha del menú que aparece debajo.

 Nuevo (New) abre Crear un nuevo diálogo de proyecto (Create New Project dialog).
 Abrir (Open) abre un proyecto existente en el disco.
 Guardar (Save) guarda el proyecto actual en el disco.
 Guardar proyecto como (Save as project) y guardar como archivo único (sabe as single
file) lo guarda en una carpeta o archivo diferente. Ver Saving and sharing projects.
 Exportar el proyecto (Export project) exporta el juego a HTML5, listo para distribución.
Ver Exporting and Publishing.
 Cerrar pestaña (Close tab) cierra la pestaña que tengas abierta en ese momento. También
se pueden cerrar clicándolas en el centro.
 Cerrar proyecto (Close project) Cierra el proyecto actual, preguntándote si quieres
guardar los cambios.

En la parte de abajo hay cuatro botones adicionales:


 Ayuda (Help) abre este manual
 Sobre (About) Abre el About dialog con información sobre tu ordenador, la versión de
C2 y demás.
 Preferencias (Preferences) abre el diálogo de preferencias Preferences dialog con
configuraciones para C2.
 Salida (Exit) cierra C2.

3.2 Barra de Herramientas


Barra de Herramientas es el nombre de la barra con pestañas en la parte superior de la ventana,
similar al diseño de Office 2007 y superiores.

Por defecto esta barra está escondida hasta que clicas una de las pestañas. Puedes mostrarla de
forma permanente clicando el botón Pin de la barra arriba a la derecha.

Los accesos directos del teclado se ven o pasando sobre un botón de la barra o presionando Alt,
que los muestra todos en pantalla.

La pestaña Home (Inicio)

Estas pestañas tienen las funciones más usadas y comunes a todos los programas: Cortar (Cut),
Copiar (Copy), Pegar (Paste), Deshacer (Undo) y Rehacer (Redo).

Los botones Borrar (Delete), Seleccionar todo (Select All) y Deseleccionar todo (Select None)
afectan la selección actual en la Vista de la Hoja de Eventos o la Vista de Plano.

Configuraciones (Configurations) te permite configurar diferentes versiones de tu proyecto sin


tener que guardar varios proyectos en el disco. Configuraciónes activas (Active configurations)
establece que configuraciones están siendo editadas. Ya que solo se puede ver una configuración
de una vez, se muestran con el Mostrador de Configuraciones (Display configuration), que debe
ser una configuración activa.

La sección Online contiene algunos enlaces a webs que te pueden ser útiles.
La sección Vista previa (Preview) tiene botones para hacer una vista previa del proyecto y
exportarlo a HTML5 para su distribución.

La pestaña View (Vista)

La sección Barras (Bars) te permite mostrar o esconder las diversas barras de la interfaz de C2
clicando en las cajas.

La sección Zoom se usa para hacer zoom en ambos, la Vista de Plano y la Hoja de Eventos.

La sección Cuadrícula de Plano (Layout Grid) sólo se aplica a la Vista de Plano. Habilitando
Snap to Grid (Ajustar a la cuadrícula) los objetos que muevas y sitúes se ajustarán a una
cuadrícula invisible en la que puedes establecer las medidas.

El Tema (Theme) te permite elegir diferentes estilos visuales a la interfaz de C2. Es sólo estético
y no afecta a la funcionalidad del editor.

La pestaña Acontecimientos (Events)

Esta pestaña sólo se aplica a la Vista de la Hoja de Eventos. Si una vista de plano está activada
los botones estarán desabilitados.

El botón Add (Añadir) da formas rápidas de añadir un nuevo evento, condición, acción, sub-
acontecimiento, grupo de aeventos, variables locales o globales, incluir evento o comentario. Si
tienes algo seleccionado en la Hoja de Eventos, el nuevo item se añadirá al lado de la selección.
Deshabilitar (Disable) te permite alternar condiciones, acciones o eventos completos,
activándolos o desactivándolos. Un evento desactivado aparecerá tachado y si se ha borrado
correctamente no afectará más al juego. Pero siempre puedes volver a activarlo clicando
Deshabilitar otra vez. Esto es útil para las pruebas.

La sección Búsqueda (Search) te permite filtrar los eventos en las hojas actuales con una
búsqueda. Si un acontecimiento contiene el texto que has buscado, aparecerá, a no ser que lo
hayas eliminado. Esto es útil para localizar eventos relacionados con un proyecto concreto o para
encontrar algo en una larga hoja de eventos. El botón Eliminar Búsqueda (Clear Search) vuelve a
mostrar todos los eventos, también pulsando Escape.

Mostrar enlaces de “Añadir acción” (Show 'Add action' links) puede usarse para esconder o
mostrar el enlace “Añadir acción” (Add action) en cualquier evento. Esto ofrece una forma
rápida de añadir acciones nuevas. Aunque puede incrementar significativamente la altura dede la
hoja de eventos, haciéndola difícila para leer o encontrar eventos. Si quieres revisar una hoja de
evento es útil quitar estos enlaces. Las acciones se pueden seguir añadiendo a los eventos incluso
aunque los enlaces estén escondidos usando el botón Añadir acción (Add action) de la barra de
herramientas o del menú del botón derecho del ratón.

3.3 Barra del Proyecto


La Barra del Proyecto (Project Bar) muestra un resumen de todo tu proyecto. Ve a Project
Structure para un resumen de los elementos que conforman tu proyecto o a la sección (Proyectos
primitivos) Project Primitives del manual para más detalles.
El nombre del proyecto aparece con un asterisco (por ejemplo Space Blaster*) si tiene cambios
sin guardar.

Organizando proyectos
La Barra del Proyecto puede usarse para organizar tu proyecto en subcarpetas (solo con licencia).
Las Subcarpetas se añaden clicando con el botón derecho en una carpeta y seleccionando Añadir
subcarpeta (Add subfolder). Entonces, puedes arrastrar y soltar carpetas e ítems para
organizarlos.

Manejando el proyecto
Clica con el botón derecho cualquier ítem de la Barra del Proyecto y mostrará una lista de
opciones. La mayoría de los ítems pueden ser renombrados y eliminados. Clicando una carpeta
con el botón derecho te da la opción de añadir ítems nuevos en esa carpeta, como un plano u hoja
de eventos nuevos. Los objetos se suelen añadir en la Vista de Plano, pero también puedes
añadirlos a la Barra del Proyecto.

Clica con el botón derecho el nombre del proyecto en la parte de arriba para cerrar, exportar o
abrir la carpeta del proyecto en Windows Explorer.

Borrar objetos
Borrarlos de la Vista de Plano no eliminará un objeto del proyecto. La única forma de borrarlo
completamente es eliminarlo de la Barra del Proyecto.

Importar audio
Clica con el botón derecho las carpetas de Sonido o Música y selecciona Importar (Import) para
abrir el diálogo de importación de audio (Import Audio dialog). Esto te permitirá coger archivos
de audio de tu ordenador e importarlos. C2 los convertirá a los formatos necesarios. Para audio
en play-back asegúrate de que añades el Objeto de Audio (Audio object) al proyecto.

Importar archivos
Puedes importar archivos externos adicionales al proyecto. Para más información, ve a Project
Files.
3.4 Barra de propiedades
La Barra de Propiedades (Properties Bar) es una parte esencial. Muestra una lista de todos los
ajustes que puedes cambiar seleccionándolos. En la imagen de abajo, un plano está seleccionado,
así que se muestran las propiedades de ese plano.

Hay demasiadas propiedades en C2 para listarlas aquí. En cambio, las propiedades de diferentes
partes del proyecto se explican en su sección del manual. Por ejemplo, las propiedades de los
planos se definen en la sección Planos.

Las propiedades están organizadas en categorías que pueden expandirse con el botón +. Hay
muchos tipos de propiedades, incluyendo campos de números y de texto, listas que se despliegan
y enlaces para clicar. El nombre de las propiedades aparece en la columna de la izquierda, y los
valores editables en la columna de la derecha.

Siempre que algo del proyecto es clicado o seleccionado, sus propiedades aparecen en la Barra
de Propiedades. Por ejemplo, seleccionando la vista de plano o clicando ítems de la Barra del
Proyecto se muestran las propiedades más relevantes.

Elementos con propiedades

Los siguientes elementos tienen propiedades:

 Proyectos (Projects)
 Planos (Layouts)
 Capas (Layers)
 Ejemplos de Objeto (Object instances)
 Animaciones (Animations)

Muchos comportamientos (behaviors) tienen sus propias propiedades – ver Behavior reference
Muchos plugins tienen sus propias propiedades – ver Plugin reference
Muchos objetos también tienen efectos que tienen sus propias propiedades.

Mira la sección del manual referente a cada elemento. También hay un enlace de Ayuda (Help)
en la parte de debajo de las propiedades que te llevaran a la parte adecuada del manual.
Descripciones de la propiedad

Todas las propiedades tienen una descripción que ofrece información adicional sobre para qué se
usa cada una. Esto se muestra en el panel de la parte de debajo de la Barra de Propiedades. Es
mejor echarle un ojo ya que contiene información útil y consejos. Aquí se muestra un ejemplo.

3.5 Barra de objetos


La Barra de Objetos (Object Bar) es más útil en la Vista de Plano. Muestra una lista de objetos
con iconos grandes. Los objetos pueden ser arrastrados y soltados para situarlos en el plano. Esto
hace que la Barra de Objetos sea útil, ya que muestra los objetos que quieres situar, siendo más
rápido en ocasiones que la Barra del Proyecto (que lista todo, no sólo objetos). Mira la sección
Objects.

La Barra de Objetos también da otra forma de acceder a las propiedades del objeto.
Seleccionando un icono en la barra puedes ver las propiedades en la Barra de Propiedades. Si
una Vista de Plano está abierta, también seleccionará todos los ejemplos de ese objeto que

existan en él.

Navegando por los objetos

Por defecto, la Barra de Objetos los muestra organizados en carpetas. Si haces doble clic en una
se muestra el contenido. Clica la flecha verde Arriba (Up) para volver a la carpeta general.

Si seleccionas una carpeta en la Barra del Proyecto también aparece el contenido en la Barra de
Objetos.

Los objetos también se pueden organizar arrastrándolos y soltándolos en carpetas de la Barra de


Objetos, pero la Barra del Proyecto es mejor para ello.
Mostrar opciones
El texto de arriba de la barra de título muestra el filtro o carpeta actual si hay. Por defecto sólo
muestra los objetos del plano actual (por ejemplo Todos los objetos en “MyLayout”). Esto
significa que no mostrará objetos en otros planos, ni objetos del proyecto como el Ratón o el
Teclado. Se puede acceder a estos objetos vía la Barra del Proyecto y arrastrarlos y soltarlos en
el plano desde allí. Las opciones de filtro pueden ajustarse para que muestren todos los objetos
del proyecto en la Barra de Objetos (ver más abajo).

Clica el botón derecho en un espacio de la Barra de Objeto para mostrar las opciones.

Subir a la carpeta general (Up to parent folder)


Un acceso directo del botón verde Subir (Up) de la parte de arriba de la Barra de Objeto.

Subir a la raíz (Up to root)


Volver a la raíz (el primer nivel) de la carpeta, como si clicaras Objects types en la Barra del
Proyecto.

Insertar un nuevo objeto (Insert new object) y Añadir subcarpetas (Add subfolder)
Accesos directos de las funciones de organizar en la Barra del Proyecto.

Mostrar ruta de la barra (Show path toolbar)


Muestra o esconde el texto y el botón Arriba (Up) en la parte de arriba de la Barra de Objetos.

Filtrar objetos (Filter objects)


Configura a Plano de Objetos Actual (Current layout objetcs) para mostrar solamente los objetos
que están en el plano actual (el plano por defecto) o Todos los objetos del proyecto (All project
objects)para mostrar

Ver como (View as)


Configura la Estructura de la Carpeta (Folder Structure) para mostrar los objetos organizados
en sus subcarpetas (las subcarpetas por defectos) o Lista Simple (Simple List) para alistar todos
los objetos sin tener en cuenta su carpeta (sin subcarpetas).

Estilo de Icono (Icon style)


Cambia como se muestran los iconos en la Barra de Objeto, incluyendo en qué dirección se
desplaza la barra si hay muchos objetos. Esto es útil si pierdes la Barra de Objetos en algún lugar
del editor, por ejemplo en la parte de arriba o debajo.
Tamaño de Icono (Icon size)
Cambia el tamaño de los iconos. Los iconos más pequeños encajan mejor en la ventana, pero los
más grandes son más fáciles de identificar.

3.6 Barra de Capas


La Barra de Capas se usa para añadir, editar y eliminar capas en un plano. Una capa es como un
folio de cristal donde se sitúan los objetos. Esto permite un manejo más fácil de los objetos que
se superponen a otros objetos, por ejemplo mostrar los objetos en primer plano (foreground)
delante de los del fondo (background). También permite hacer efectos de profundidad como la
paralasis y las capas pueden ser rotadas y escaladas individualmente.

Las capas pueden ser arrastradas y soltadas en la Barra de Capas para cambiar su orden. Las
capas de debajo de la lista se muestran al fondo (por ejemplo, objetos de fondo) y las capas de
arriba al frente (por ejemplo, objetos HUD).

Seleccionando una capa muestras sus propiedades en la Barra de Propiedades y también


configurarla como capa activa (active layer) en la que poder situar objetos. Mira las propiedades
de la capa activa en las propiedades de plano (layout properties) para más información.

La lista de capas
Cada capa de la lista tiene:
 Una casilla para cambiar la capa visible en el editor (esto no afecta al juego en la vista
previa o al exportar)
 Un icono de candado. Clicando esto la capa se bloquea. Si una capa está bloqueada, los
objetos que contenga no se pueden seleccionar. Esto es útil para prevenir selecciones
accidentales en capas que no se usan casi nunca.
 Un número a la derecha. Esto es un índice que empieza en 0 (la primera capa es 0, no 1).
Si necesitas introducir un número de capa en el sistema de eventos, este es el número que
debes introducir. (También puedes introducir el nombre de capa que sería más eficiente si
reorganizas las capas a menudo).
La Barra de Capas
Los iconos a lo largo de la parte de arriba ofrecen accesos directos para editar las capas. Se
pueden añadir capas y hay opciones alternativas para la visibilidad y el bloqueo. También hay
unos botones de Renombrar (Rename) y Borrar (Delete), (F2 y Borrar en el teclado
respectivamente). Las capas se pueden renombrar clicando una vez sobre ella, al igual que los
archivos en Windows. Finalmente, hay unos botones Mover arriba (Move up) y Mover abajo
(Move down) que ofrecen la alternativa de arrastrar y soltar para reordenar capas.

3.7 Vista de Plano


La Vista de Plano (Layout View) es un diseñador visual para tus objetos. Permite configurar y
preparar planos de objetos, como un nivel, menú o título de pantalla en un juego. En otras
herramientas, plano puede significar escena, habitación, frame o periodo. Ve a la sección
layouts.

El rectángulo intermitente en la parte de arriba a la izquierda indica el tamaño de la ventana en el


plano.
Adding, modifying and deleting objects

Haz doble clic en un espacio del plano o clica el botón derecho y selecciona Insertar objeto
nuevo (Insert new object) para añadir un nuevo tipo de objeto. Aparecerá el diálogo Insert New
Object dialog.

Para crear nuevos ejemplos de un tipo de objeto existente, otro objeto similar puede ser
arrastrado usando la tecla control, copiado y pegado, o arrastrado y soltado desde la Barra del
Proyecto o la Barra de Objeto. Asegúrate de que tienes clara la diferencia entre tipo de objeto y
ejemplo, está en Project Structure).

Un acceso directo para importar archivos de imagen como objetos ligeros (Sprites) arrastrar y
soltar la imagen desde el explorador de Windows a la Vista de Plano. Esto crea automáticamente
un nuevo tipo de objeto ligero. Si arrastras varias imágenes, el objeto se convertirá en animación
con las imágenes arrastradas como frames de la animación.

Los ejemplos pueden moverse arrastrándolos y soltándolos con el ratón. Mantén presionado shift
para fijar el eje a la diagonal. También puedes empujar 1 pixel cada vez que pulsas una flecha
del teclado (mantén pulsado shift al empujar y se moverá 10 píxeles) o puedes introducir las
coordenadas directamente en la Barra de Propiedades.

La tecla Borrar o la opción Borrar del botón derecho elimina ejemplos. Borrar todos los ejemplos
de un objeto no eliminará el tipo de objeto del proyecto. Para eliminarlo completamente debes
borrarlo vía la Barra de Proyecto.

Clica objetos para seleccionarlos. No se pueden seleccionar si la capa está bloqueada. Mantén
presionado control mientras clicas para seleccionar varios objetos, o clica y arrastra un
rectángulo de selección. La Barra de Propiedades muestra las propiedades de todos los objetos
seleccionados, así que si cambias alguna propiedad será para todos.

Cuando se selecciona un simple objeto aparece con unos ajustes de tamaño alrededor:

Clica y arrastra estos ajustes para cambiar el tamaño del objeto. Mantén shift presionado para
hacerlo proporcionalmente. El tamaño de los ajustes se puede cambiar en Preferencias
(Preferences).
Los objetos que se pueden rotar también tienen unos ajustes de ángulo. Estos pueden ser clicados
y arrastrados para cambiar el ángulo del objeto. También puedes introducir un ángulo en la Barra
de Propiedades.

Desplazamiento y Zoom
Hay tres formas de desplazarse en la Vista de Plano:
 Las barra de desplazamiento horizontal y vertical a los márgenes
 Mantener presionado el botón central del ratón y arrastrar el ratón
 Mantener presionada la barra espaciadora (útil para portátiles)

En ordenadores fijos, usar el botón central y arrastrar el ratón es lo más conveniente para
moverte por el plano.

El Zoom es útil para enfocar areas pequeñas o tener una vista completa del plano completo. Hay
diversas formas de hacer zoom:
 Los botones de Zoom en la Barra de Herramientas (mantiene Shift presionado mientras
clicas para ajustar)
 Mantener control presionado y mover la ruleta del ratón. Mantén pulsado Control y Shift
para hacer zoom en intervalos regulares (por ejemplo, 100%, 200%, 400%...)
 + y – en el teclado (Mantén pulsado Shift para ajustar el zoom)

El zoom actual se muestra en la Barra de Estado. Presiona Control+0 para volver al zoom 100%.

Otros
Para ir a la Hoja de Eventos asociada, presiona Ctrl+E o Ctrl+Tab o clicar el botón derecho y
seleccionar Editar Hoja de Eventos (Edit Event Sheet).

El orden de objetos Z dentro de una capa puede ajustarse usando el botón derecho y
seleccionando Orden Z – Enviar a la primera capa o Enviar a la última capa (Z Order - Send to
top of layer or Send to bottom of layer).
Los objetos pueden ajustarse a la cuadrícula para hacer un mosaico. Esto se puede habilitar en la
Barra de Vista en las Herramientas.

El editor de imagen o animación se puede ver haciendo doble clic en un objeto con imagen o
animación como el Fondo Adosado (en mosaico) y los objetos pequeños o Sprite.

Vista previa de efectos


Los efectos se muestran en la Vista de Plano si WebGL está habilitado en las Propiedades del
Proyecto. Si WebGL está deshabilitado, la Vista de Plano hará una vista previa similar a la
ejecución, sin mostrar efectos ni otros recursos que han sido configurados.

3.8 Vista de la Hoja de Eventos


La Vista de la Hoja de Eventos es donde se pueden añadir, ver y editar Eventos en una Hoja
usando el sistema de eventos no programados de C2.
El sistema de Eventos tiene muchas características, así que tiene su propia sección del manual.
Esta sección solo mostrará las características básicas.

Diagrama de un Evento

Los Eventos están conformados por tres secciones:


1. El Bloque de Eventos (Event Block), que contiene las condiciones. Nótese que el margen
(margin) a la izquierda de las Condiciónes (Condition) te permite seleccionar el evento
completo.
Las Condiciones (Conditions) están listadas dentro del Bloque de Eventos.
Las Acciones (Actions) están listadas en la derecha del Bloque de Eventos.

Las Condiciones y Acciones pueden seleccionarse clicando sobre ellas. El Evento completo
puede seleccionarse (seleccionando también todas sus condiciones y acciones) clicando el
margen del Evento o la parte de abajo del Bloque de Eventos. Como en la Vista de Plano, se
pueden hacer selecciones múltiples manteniendo Control cuando clicas distintos ítems. Aunque
sólo puedes seleccionar eventos, condiciones o acciones de una sola vez (no puedes seleccionar
distintos tipos de ítems de una vez). También puedes mantener pulsado Shift y clicar el evento,
condición o acción para seleccionar todos los ítems entre la selección y el evento clicado.

Creando Eventos
Hay varias formas de añadir nuevos Eventos:
 Haciendo doble clic en un espacio de la Hoja de Eventos
 Clicando el enlace Añadir Evento (Add event) detrás del último evento.
 Clicando el botón derecho y eligiendo un ítem para añadir en el menú.
 Usar la Barra de Eventos
Cuando añades un Evento nuevo, el diálogo que aparece es para añadir la primera condición (ver
Diálogo de Añadir condición, Add Condition dialog). Para añadir más condiciones la Evento,
usa el botón derecho en el margen o en una condición ya creada y selecciona Añadir otra
condición (Add another condition).

Se pueden añadir acciones clicando el enlace Añadir acción (Add action) (si no ha sido
escondida de la barra), o usando el botón derecho en el margen o en una acción ya creada y
seleccionando Añadir otra acción (Add another action). Mirar también Diálogo de Añadir acción
(Add Action dialog).

Modificar Eventos
Haz doble clic o selecciona y pulsa Enter en una condición o acción para editarla.

Eventos, condiciones y acciones se pueden arrastrar y soltar sobre la Hoja de Eventos.


Manteniendo Control y arrastrando se duplica un Evento, condición o acción. Los ítems de
Eventos también pueden ser cortados, copiados y pegados.

Sería conveniente organizar los eventos en Grupos de Eventos (Event Groups), que se pueden
activar y desactivar en conjunto.

Desplazamiento y zoom
Hay varias formas de desplazarse en la Vista de Hoja de Eventos:
 La barra vertical a la derecha de la vista.
 Usando la rueda del ratón
 Manteniendo pulsado el botón central del ratón y arrastrándolo.
 Manteniendo la barra espaciadora y moviendo el ratón (útil para portátiles)

Usa los botones de zoom de la Barra en la Barra de Vista o mantén pulsado control y mueve la
rueda del ratón para hacer zoom. Pulsa Ctrl+0 para volver al zoom 100%. El tamaño de fuente en
la Hoja de Eventos se puede configurar en Preferencias (Preferences).

3.9 Editor de Imágenes y Animaciones


C2 tiene un editor de imágenes dónde aparecen ventanas adicionales que te permiten crear
animaciones con los objetos. Nota: actualmente el editor de imágenes está en proceso de
creación y no está completo.
Para abrir este editor, haz doble clic en un objeto con imagen o animación en la Vista de Plano.
También puedes clicar con el botón derecho en la Barra de Propiedades o Barra de Objetos y
seleccionar Editar Imagen (Edit image) o Editar Animación (Edit animations).

El editor de imagen
El Editor de imagen se usa para editar imágenes para fondos adosados y animaciones usando
Sprites.

Los botones de arriba modifican la imagen completa:


Imagen transparente (Clear image) Hace que se vuelva transparente.
Abrir (Open) Importa un archivo de imagen del disco en formatos PNG, JPEG, BMP, TIF, GIF o
WMF. PNG es el recomendado ya que no tiene pérdidas, se suele comprimir bien y soporta
transparencia alfa.
Guardar (Save) Exporta la imagen a un archivo del disco en formatos PNG, JPEG, BMP, TIF o
GIF. PNG es el recomendado.
Ajustar formato de exportación (Set export format) Abre el diálogo de Formato de Imagen
(Image Format dialog) permitiéndote configurar el formato de exportación a PNG-32, PNG-8 o
JPEG.
Espejo (Mirror) Espeja la imagen horizontalmente. Mantén Shift para espejar la imagen
completa.
Voltear (Flip) Voltea la imagen verticalmente. Mantén Shift para voltear la imagen completa.
Rotar 90 grados en el sentido de las agujas del reloj/sentido contrario (Rotate 90 degrees
clockwise/anticlockwise) rota la imagen. Mantén Shift para rotar la animación completa.
Recortar (Crop) Quita la transparencia que sobra a los márgenes de la imagen, haciendo el lienzo
lo más pequeño posible para que quepa la imagen. Se recomienda para ahorrar memoria y hacer
las colisiones más precisas y eficientes. Mantén Shift para recortar la animación entera.
Ajustar tamaño (Resize) Ajusta la imagen al tamaño del lienzo, con opciones de centrar, alinear a
la izquierda o ajustar al lienzo.
Botones de Zoom (Zoom buttons) Hacen zoom a una imagen. También puedes mantener Control
y mover la rueda del ratón.
Cambiar el brillo del fondo (Toggle background brightness) Cambia la sombra del fondo de
débil a fuerte. La sombra fuerte es más útil para editar imágenes brillantes como puntos de luz,
nubes, etc.
La Vista del Editor de imagen también puede ser desplazada manteniendo el botón central del
ratón y arrastrando.

Los botones de la izquierda son herramientas:


Selección rectangular (Rectangle select) Selecciona, borra, corta, copia y pega secciones
rectangulares.
Borrador (Eraser) Borra secciones de la imagen.
Lápiz (Pencil) Dibuja píxeles individuales o, arratrandolo, crea líneas de 1 píxel de grosor.
Pincel (Brush) Dibuja con un pincel redondo.
Línea (Line) Dibuja líneas de colores.
Rectángulo (Rectangle) Rellena un área rectangular de color.
Fill (Rellenar) Rellena un área completa con color.
Seleccionador de color (Color Picker) Selecciona un color primario o secundario de la imagen.
Un acceso directo es manteniendo Control y clicando la imagen, aunque estés usando otra
herramienta.
Ajustar origen y puntos de la imagen (Set origin and image points) Abre el diálogo de Puntos de
imagen Image Points dialog. Esto te permite ajustar el origen de la imagen (su punto de rotación)
y situar puntos focales de la imagen como la punta de un arma. Se puede acceder a estos puntos
en el sistema de eventos para crear objetos. Algunos objetos, como fondos adosados, no usan
origen no puntos de imagen.
Ajustar colisión poligonal (Set collision polygon) Ajusta la forma de una colisión para una
imagen o frame. Por defecto, C2 intuye la forma, pero no siempre es preciso. Clica y arrastra los
puntos de la colisión poligonal para delinear su forma. Clica el botón derecho para mostrar el
menú con opciones adicionales para la colisión, como añadir y borrar puntos (adding and
deleting points). Algunos objetos, como fondos adosados, no usan colisiones poligonales.

Barra de Animaciones
En la Barra de Animaciones se pueden crear varias animaciones a partir de pequeños objetos o
Sprites.

Clica el botón derecho en un espacio par añadir una nueva animación o una subcarpeta para
organizar animaciones. Clica el botón derecho en una animación y selecciona Vista previa
(Preview) para hacer una vista previa de la animación en el juego.
Cuando seleccionas una animación, la Barra de Propiedades muestra sus ajustes. Estos son:

Velocidad (Speed) El número de frames por segundo. Por ejemplo, si está en 5, cada frame de la
animación durará 1/5 de segundo. Si no quieres que la animación se mueva ponlo a 0 (si un
mosaico se hace con baldosas distintas en cada frame).
Bucle (Loop) Vuelve a empezar la animación siempre que acaba.
Repetir (Repeat count) Si no hay bucle, el número de veces que quieres repetir la animación.
Repetir en (Repeat to) El número de frame (índice 0) en el que quieres repetir si hay bucle o
repetición.
Ping-Pong a animación va hacia delante y hacia atrás.

Barra de Frames
La Barra de Frames muestra la lista de frames de la animación actual.

Selecciona una imagen para activar el Editor de Imagen y editar el frame de la animación.
También puedes arrastrar y soltar frames para ajustar la secuencia.

Clica el botón derecho en un espacio de la Barra de Frames para:

Añadir frame (Add frame) Añade un frame blanco al final de la secuencia.


Duplicar el último frame (Duplicate last frame) Hace una copia del último frame y lo añade a la
secuencia.
Invertir frames (Reverse frames) Invierte el orden de todos los frames.
Importar frames (Import frames) Abre un diálogo para seleccionar una o más imágenes del disco.
Se añaden como frames de animación.
Importar tira de Sprites (Import sprite strip) Importa una tira de Sprites o mosaico, donde una
imagen simple contiene distintos frames alineados en una cuadrícula. Esto se hace con el diálogo
de importación de tiras de Sprites (Import Sprite Strip dialog).
Cargar archivos del disco (Reload files from disk) Carga todas las imágenes desde la carpeta del
proyecto. Esto es útil si has editado las imágenes de la carpeta del proyecto mientras C2 estaba
abierto y quieres que el programa reconozca los cambios. (Esta opción estará deshabilitada si no
usas una carpeta del proyecto).
Tamaño miniatura (Thumbnail size) Ajusta el tamaño de los iconos en miniatura de cada frame
de la barra.

Seleccionando un frame se muestran sus propiedades en la Barra de Propiedades: Velocidad del


frame (Frame speed) que es un multiplicador del tiempo que usa un frame. Por ejemplo, un
frame a velocidad 2 usará dos veces más tiempo, 0,5 la mitad, etc. en relación con la velocidad
actual de la animación.
3.10 Diálogos
Esta sección lista todos los diálogos en el editor de C2. Quizás no necesites usarlos todos,
depende de las características que uses. Cada diálogo tiene un enlace a su sección en este
manual. Quizás prefieras usarlos para leerlos cuando los necesites en vez de leerlos todos ahora.

3.10.1 Sobre (About)


Si estás buscando ayuda general en C2, intenta con la portada del manual. Esta página te
describe el diálogo Sobre (About).

El diálogo Sobre contiene:

Número de edición (Release number) Por ejemplo, Release 70


C2 no utiliza el sistema numérico a.b.c. Las versiones son un número simple en el que se
incrementa 1 con cada nueva edición. Debes mantenerte actualizado a la última versión para
obtener más características, mejor rendimiento y la mayor estabilidad.
Ingeniería de la edición (Release architecture) 32-bit o 64-bit
Esto determina si estás usando la versión de 32-bit o la de 64-bit. Si estás usando un ordenador
de 64-bit es recomendable usar la versión de 64-bit, a menos que estés usando la versión portátil.
Ve a Instalando C2 Installing Construct 2 para más información.

Tipo de edición (Release Type)


Después del número y la ingeniería puede aparecer la palabra checked. Ests ediciones son para
pruebas y pueden mostrar diálogos de fallos indicando un posible problema. Debes informar de
esto a Scirra.

Si la palabra checked no aparece, indica que la versión de C2 es estable y apropiada para el uso
diario.

Fecha de creación (Build timestamp)


Incluye la fecha en la que esa programa C2 concreto fue creado por Scirra. Esta fecha puede ser
usada por Scirra para diagnósticos.

Información de OpenGL (OpenGL information)


Esta sección muestra tu tarjeta gráfica y las capacidades básicas.

Es importante mantener los drives de la tarjeta actualizados. Muchos fallos en el plano (como
objetos que no aparecen o secciones cortadas) son causados por los drivers. Actualizar a la
última versión arregla estos problemas casi siempre. Si no lo has hecho antes de instalar C2, te
recomendamos que busques el enlace de actualización y lo ejecutes. Quizás necesites permisos
del administrador para hacerlos funcionar.

Información de la Licencia (License Information)


Contiene la información si has comprado una licencia. Ve a la sección, usar una licencia Using a
license.

Página de Créditos
Lista todas las personas y organizaciones que han trabajado en la creación de C2.
3.10.2 Añadir comportamiento (Add behavior)

El diálogo de Añadir comportamiento te permite añadirlo a un tipo de objeto. Algunos


comportamientos solo se pueden añadir una vez a un objeto, así que no aparecerán en el diálogo
si ya está aplicado. Puede abrirse desde el diálogo de Comportamientos de objeto Object
Behaviors dialog. Para saber sobre cada comportamiento ve a la sección de comportamientos del
manual.

Simplemente, haz doble clic en el comportamiento que quieras añadir. Selecciónalo para ver una
breve descripción bajo los iconos. Los comportamientos disponibles se pueden filtrar por nombre
o tipo en el cuadro de búsqueda arriba a la derecha.

3.10.3 Añadir condición/acción (Add condition/action)


El diálogo de Añadir condición y el diálogo de Añadir acción son muy similares. Estos te
permiten añadir o editar condiciones o acciones en una Hoja de Eventos.

Añadir una acción o condición consta de tres pasos:


1. Elegir el objeto que tendrá la condición o acción
2. Elegir la condición o acción en ese objeto
3. Introducir parámetros, si es el caso, como las coordinadas X, Y para ajustar la posición.

Los botones Siguiente (Next) y Anterior (Back) se usan para moverse adelante y atrás por estos
pasos.
Paso 1: Elige el objeto
En este paso aparece una lista de todos los tipos de objeto. El Sistema de objeto (System object),
que representa la funcionalidad, siempre aparece primero y el resto de objetos están ordenados
alfabéticamente.

Haz doble clic en un objeto para seleccionarlo. Escribe en el cuadro de búsqueda para un filtro
rápido cuando hay muchos objetos.

Las condiciones y acciones que cada objeto contiene se relacionan con el tipo de objeto que es
(Sprite, teclado o audio). Por ejemplo, para situar la acción Reproducir sonido (Play sound) en el
diálogo, primero haz doble clic en el objeto de Audio. Recuerda que el Sistema de objeto tiene
algunas condiciones que se pueden usar en cualquier objeto, como Recoger aleatoriamente (Pick
random) y Para cada (For each).
Paso 2: Elegir una condición o acción
En este paso aparece una lista de condiciones y acciones en el objeto elegido. Están ordenados en
categorías. Abajo se muestra una lista de las condiciones del Sistema de objeto.

Haz doble clic en una condición o acción para elegirla. Como antes, escribir en el cuadro de
búsqueda ayuda a localizarlos más rápido en una lista.

Para más información de cada condición y acción, ve a Plugin reference. Si el objeto elegido
tiene algún Comportamiento, se pueden añadir condiciones y acciones extra en el diálogo.

Algunas condiciones y acciones requieren parámetros. Por ejemplo, La acción Ajustar posición
(Set position) para un Sprite requiere las coordenadas X, Y. Esto se hace en el diálogo de
parámetros en el siguiente paso. Otras no los usas, como Destruir (Destroy). En este caso el
proceso ya estaría completo.

Paso 3: Introducir parámetros


Si la condición o acción elegida requiere parámetros, el diálogo de parámetros aparece. Ver
Parameters dialog para más información.
3.10.4 Añadir configuración (Add configuration)
El diálogo de añadir configuración se usa para la característica Configuraciones que está en
proceso de creación. ¡Vuelve pronto para más detalles!

3.10.5 Diálogo de efectos (Effects dialog)


El diálogo de efectos te permite añadir o quitar efectos de objetos, capas y planos. Se puede abrir
desde la Barra de Propiedades cuando las propiedades de un objeto aceptan efectos.

Los efectos se pueden añadir con la barra de arriba o clicando el botón derecho y seleccionando
Añadir efecto (Add effect). Esto abre el diálogo de Añadir Efecto. Ambas formas también te
permiten renombrar (F2) o borrar (Del) efectos.

Se pueden ordenar los efectos usando los botones Arriba (Up) y Abajo (Down) de la barra o
arrastrando y soltándolos. El orden de los efectos es importante porque define el orden en el que
son procesados, que puede alterar el resultado visual. Para más información, mira la sección
Effects.
3.10.6 Grupo de eventos (Event group)
El diálogo de Añadir/Editar grupo de eventos (Add/Edit Event Group) contiene los ajustes de los
mismos.

Nombre (Name)
Un nombre identifica un grupo de eventos y se muestra en grande en la Hoja de Eventos. Cuando
habilitas o deshabilitas un grupo de eventos, el nombre identifica qué grupo es.

Descripción Opcional (Description Optional)


Una descripción opcional da un resumen de lo que hacen los eventos del grupo, con propósitos
organizativos. Se muestra en el letrero pequeño debajo del nombre de grupo.

Activo desde el principio (Active on start)


Determina si un grupo de eventos está o no habilitado cuando se comienza el proyecto. Si no está
seleccionada, el grupo de eventos estará deshabilitado y ninguno de los eventos que contiene
funcionará hasta que se habilite seleccionando Activar grupo (Set group active) en el sistema de
acción system action.

3.10.7 Variable de evento


El diálogo de Añadir/Editar Variable de evento (Add/Edit Event Variable dialog) te permite
ajustar el nombre, tipo y valor inicial de una variable local o global en una Hoja de eventos.
El Nombre (Name) identifica la variable del evento. Se escriben usando expresiones para
recuperar el valor de la variable del evento. Algunos nombres no se pueden usar, como
expresiones del sistema ya que se podrían confundir.

El Tipo (Type) especifica qué tipo de de valor tiene la variable. La variable de un evento puede
almacenar un Número o Texto (también llamado string). El tipo de variable de evento no cambia
– no puedes almacenar texto en una variable numérica ni viceversa.

El Valor inicial (Initial value) es el primer Número de una variable numérica, o la inicial de un
Texto en una no numérica. Este cuadro se puede dejar vacio. La inicial no necesita comillas. En
otras palabras, Hola es una entrada válida y si introduces “Hola” la inicial incluirá las comillas.
Nota que esto es diferente a introducir textos que requieran comillas.

La Descripción (Description) es un comentario opcional que describe brevemente para qué se


usa la variable. Se muestra al lado del nombre para recordarte el uso de la variable.

3.10.8 Export project


El diálogo de Exportar objetos (Export Project) exporta el proyecto en un formato preparado
para publicar. Para más información, ve a Exporting and Publishing.

Si estás buscando consejos para publicar tu juego, ve al tutorial Publishing and promoting your
Construct 2 game ⇗.

Si estás interesado en detalles técnicos de la exportación, mira la sección Tecnología


(Technology)

Exportar para (Export for)


Hay varias formas de publicar juegos en HTML5. Para más información, ve a Exporting and
Publishing.
Carpeta de archivos (Folder for files)
Todos los archivos exportados se generan en esta carpeta. Incluye una variedad de archivos
HTML, Javascript, PNG y más. Se recomienda usar una carpeta nueva y vacía. La carpeta por
defecto puede elegirse en Preferencias (Preferences).

Subcarpeta de imágenes (Subfolder for images)


Todas las imágenes y frames de animación del proyecto estarán en esta subcarpeta. Déjala vacía
para exportar las imágenes a la carpeta de exportación.

Subcarpeta de archivos del proyecto (Subfolder for project files)


Todos los archivos del proyecto (audio y música) estarán en esta carpeta. Déjala vacía para
exportar los archivos a la carpeta de exportación.

Recompresión PNG (PNG recompression)


Las imágenes exportadas están en formato PNG y pueden recomprimirse sin pérdidas para
reducir más el tamaño. Esto puede tardar bastante más en exportarse. Usa Ninguno (None) para
saltarse este paso – los archivos serán más grandes pero el proceso de exportación más rápido. Se
recomienda la compresión Estándar (Standard) para asegurar que el tamaño de descarga es lo
más pequeño posible. En bruto (Brute) se puede usar si tienes objetos extremadamente grandes o
si es importante ahorrar mucha banda ancha, pero el proceso de exportación será muy largo. Para
más información sobre técnicas de recompresión de C2, mira este post Image compression in
Construct 2 ⇗.

Minimizar texto (Minify script)


El código Javascript exportado se puede comprimir con el Closure Compiler de Google para
reducir el tiempo de descarga. Esto se llama minimizar. Al mismo tiempo que el código se
oscurece para dificultar su acceso. Por esta razón se recomienda minimizar el script al exportar.
Esto requiere que Java esté instalado (distinto de Javascript).
3.10.9 Panel de expresiones (Expressions panel)
El Panel de expresiones es un diccionario de todas las expresiones disponibles en tu proyecto. Se
muestran al lado del Diálogo de parámetros. Por defecto aparece semitransparente y no te
distrerá mientras introduces los parámetros. Se puede esconder o mostrar pulsando F4.

El cuadro de búsqueda en la parte de arriba se usa para filtrar objetos rápidamente.

Haz doble clic en un objeto para listar todas sus expresiones. Las descripciones se muestran
también al lado de cada expresión para indicar el valor de recuperación. Haz doble clic en una de
las expresiones de la lista para introducirla en la expresión actual en el Diálogo de parámetros.
Pulsa Escape o clica el botón Atrás (Back) para volver a la lista de objetos.

Las expresiones de comportamiento se muestran también en objetos con comportamientos. La


página del Sistema lista todas las expresiones del sistema y variables globales y locales (mira
Event Variables).
3.10.10 Formato de imágen (Image format)
El diálogo de formato de imagen se abre en el editor de imágenes/animaciones para ajustar el
formato de una imagen cuando se exporta el proyecto.

Las imágenes del proyecto se guardan siempre en formato PNG-32. Este es el único formato que
preserva una imagen con el canal alfa (alpha chanel). Estos ajustes sólo se aplican cuando el
proyecto se exporta. Son principalmente para reducir el tamaño de los archivos de imagen para
que el juego ocupe menos.

Las imágenes en PNG se recomprimen al exportarlas para reducir el tamaño sin afectar la calidad
de imagen. Para más información, mira el post Image compression in Construct 2 ⇗.

El diálogo de formato de imagen tiene las siguientes opciones:

Formato (Format)

El formato de la imagen al exportar. En resumen, los formatos son:


PNG-32 (por defecto) puede almacenar colores verdaderos sin pérdidas (perfectamente, sin
perder calidad) con la transparencia del canal alfa. Pero, los archivos son más grandes.
PNG-8 es una versión de 256 colores. Soporta el canal alfa pero sólo dentro de los 256 colores.
Imágenes retro o de pocos colores se verán igual en PNG-8. Imágenes con más de 256 colores se
reducirán a estos y puede degradar la calidad. Por otra parte, C2 usa un algoritmo avanzado
(PNGNQ ⇗) para alcanzar esta reducción de color. Esto significa que muchas imágenes
permanecerán idénticas. Los archivos en PNG-8 son mucho más pequeños que en PNG-32, así
que es una forma útil de reducir el tamaño del juego.
JPEG es un formato de imágenes de diseño para fotografía o imágenes muy detalladas. No
soporta transparencia, así que no es apropiado para imágenes que tienen transparencias o canales
alfa (aparecerán con fondo negro). Pero este formato puede conseguir los archivos más
pequeños, dependiendo de los ajustes de calidad. El formato es mejor para minimizar el tamaño
de las imágenes de un fondo grande.

Para más información sobre estos formatos busca en Wikipedia PNG ⇗ o JPEG ⇗.
Calidad (Quality)
Los ajustes de calidad cuando usas el formato JPEG. La calidad va desde 0 (peor calidad,
archivo más pequeño) a 100 (mejor calidad, archivo más grande). Las calidades por encima de
85 son difíciles de distinguir del original.75 es la recomendada en relación calidad tamaño.

Aplicar este ajuste a (Apply this setting to)


Te permite hacer el mismo ajuste de formato para muchas imágenes de una vez.
Este frame (This frame) o Esta imagen (This image) aplica los ajustes sólo a la imagen/frame
actual.
Esta animación (This animation)-sólo para sprite, aplica los ajustes a todos los frames de la
animación actual.
Todas las animaciones (All animations) – solo para sprite, aplica los ajustes al objeto entero,
todas sus frames en todas sus animaciones.
El proyecto entero (Entire Project) aplica los ajustes a todas las imágenes del proyecto. Úsalo
con cuidado, ya que se modifica cualquier ajuste de formato hecho previamente en cualquier
objeto del proyecto y no se puede deshacer.

3.10.11 Importar audio (Import audio)


El diálogo de importar audio permite añadir archivos de audio al proyecto desde el disco. Se
accede a él seleccionando Importar Sonidos (Import Sounds) o Importar Música (Import Music)
en el menú del botón derecho de la carpeta de Sonidos o Música en la Barra del Proyecto.
Asegúrate de que añades Objetos de audio a tu proyecto para que tenga música y efectos de
sonido.
Antes de que aparezca el diálogo, se te sugerirá seleccionar algún archivo de audio desde el
disco. Puedes seleccionar más de uno. Los archivos aparecen en el diálogo de Importar audio
antes de ser realmente importados, mostrando si esos formatos son o no válidos. También puedes
clicar Añadir más archivos… (Add more files…) para añadir más archivos a la lista.

Clica Importar (Import) para empezar a importar la lista de archivos al proyecto. Esto puede
tardar si los audios son muy largos (como canciones enteras); una barra de progreso aparecerá
durante el proceso. Solo se importarán los audios que tengan un formato válido para el programa.
Una vez el proceso haya finalizado, la lista mostrará los archivos que se hayan importado
correctamente. Clica Hecho (Done) para cerrar el diálogo.

Es recomendable importar archivos PCM .wav ya que son aceptados en la mayoría de


dispositivos y C2 puede encodearlos en Ogg Vorbis y MPEG-4 AAC (sólo para Windows 7+).

Los dos formatos de audio requeridos


Los creadores de navegadores no se han puesto de acuerdo en que formato de audio usar en
ellos. Internet Explorer y Safari usan MPEG-4 ACC (.m4a) y el resto (Firefox, Chrome y Opera)
usan el formato gratuito Ogg Vorbis.

Para poder reproducir el audio en todos los navegadores, tus audios deben estar en los dos
formatos. C2 te ayuda encodeando y descomprimiendo el audio que importas al formato .m4a o
.ogg automáticamente. Aunque sólo lo hará automáticamente en Windows 7 o superior. Los
usuarios de Windows XP y Vista deben encodear ellos mismos los archivos .m4a. La extensión
del archivo será .m4a. Hay encodeadores gratuitos; busca en la web AAC encoders.

El formato Ogg Vorbis será encodeado en cualquier sistema.

C2 favorece el formato Ogg Vorbis. Cuando eliges un sonido en el sistema de eventos, sólo
aparecerán los archivos .ogg. El otro formato se considera como un apoyo para aquellos
navegadores que no soportan Ogg Vorbis. Esto significa que si importas un archivo en .m4a sin
el correspondiente .ogg, este no aparecerá en el sistema de eventos.

C2 no transformará archivos .m4a a .ogg ni viceversa; se recomienda importar archivos PCM


.wav para que C2 los encodee. Transformarlos significaría perder calidad.

Categorizar correctamente archivos de audio


Es importante organizar de forma apropiada los archivos de audio, porque los archivos de la
carpeta Sonidos se descargan completamente antes de reproducirlos pero los de la carpeta
Música se reproducen en streaming. Esto significa que si una canción se pone en la carpeta
Sonidos tendrá que descargarse completamente (lo que tardara unos cuantos minutos) antes de
reproducirse, mientras que en la carpeta Música pueden empezar inmediatamente desde el
servidor.
Formatos de audio aceptados

Hay muchos formatos y muchos de ellos son aceptados a distintos niveles. Además, muchos
tienen sub-formatos y no todos los sub-formato son aceptados. Esto hace complicado
describirlos. Pero te recomendamos que solo importes archivos PCM .wav, que son los más
aceptados y pueden encodearse en los dos formatos necesarios .m4a y .ogg. Nota que hay
distintos tipos de archivos .wav a parte de PCM y éstos pueden no ser aceptados. Cualquier buen
software de codecs podrá convertirlos a PCM .wav. Intenta evita formatos con pérdidas antes de
importarlos a C2, porque la calidad empeoraría al encodearlos a .ogg y .m4a.

La siguiente lista de formatos está ordenada por su extensión y si C2 puede o no convertirlos a


Ogg Vorbis (.ogg) o MPEG-4 AAC (.m4a).

.wav (PCM o similar): Ambos


.flac (FLAC): Ambos
.ogg (Ogg Vorbis): Se puede importar pero no convertir a .m4a
.m4a (MPEG-4 AAC): Se puede importar pero no convertir a .ogg
.aif, .aiff, .aifc (AIFF): solo a .ogg
.aac (MPEG-4 AAC): solo a .m4a
.mp3 (MPEG-1 layer 3): solo a .m4a
.wma (Windows Media Audio): solo a .m4a

3.10.12 Puntos de imagen


El diálogo de Puntos de imagen te permite hacer ajustes en el origen del objeto (el punto de
rotación) y en los puntos de la imagen (puntos arbitrarios a los que se puede acceder en eventos).
Se accede a través del editor de imágenes y animaciones.

El Origen (Origin) es un punto especial que define el cetro del objeto, o su punto de rotación. Es
diferente, de color rojo. Se incluye dentro de los puntos de imagen y tienen un índice que
empieza en 0, en el que el 0 es siempre el origen. No se puede renombrar.

Los Puntos de la imagen (Image points) son útiles para crear puntos derivados en otros objetos.
Ya que puedes crear objetos en un punto de imagen en Eventos, es útil situar puntos en lugares
como la punta del arma del jugador. Estos puntos sí que pueden renombrarse, para referirse a
ellos en Eventos por su nombre.
Debajo, se sitúa un punto de imagen en la punta del arma de un jugador.

Selecciona un punto de imagen de la lista para que aparezca en la imagen. Clica el botón derecho
para situar el punto bajo el ratón. Las flechas del teclado también pueden moverlo 1 píxel cada
vez.

Se puede situar un punto rápidamente usando los números, 1 para la esquina izquierda y 5 para el
centro. También puede clicarse con el botón derecho el punto en el diálogo de puntos de imagen
y elegir la opción en el menú de acceso rápido.

Clicar con el botón derecho un punto de imagen en el diálogo también da la opción de Aplicar a
toda la animación (Apply to whole animation). Esto sitúa el punto en el mismo lugar en todos los
frames. Si el punto no existe en alguno de los frames, esta opción lo crea. Mantener shift
mientras sitúas el punto es un acceso directo.

3.10.13 Importación de banda de sprites (Improt sprite strip)


Este diálogo te permite importar una imagen que contenga la animación completa en una
cuadricula. Se accede a ella vía la Barra de frames de animación. Tras elegir Importar banda de
sprites… (Import sprite strip…) aparece un diálogo para seleccionar el archivo de imagen.
Después de elegirlo, aparece el siguiente diálogo para que introduzcas cuantos frames hay en la
animación.
Por ejemplo, la siguiente imagen tiene 7 celdas horizontales y, puesto que solo hay una fila, una
celda vertical:

Esta imagen está en una cuadrícula que tiene 4 celdas horizontales y 4 verticales:

En ambos casos, C2 separará cada celda en un frame distinto de la animación.


3.10.14 Insertar nuevo objeto

El dialogo para importar un Nuevo objeto aparece después de hacer doble clic en un espacio de
la Vista de Plano. Te permite elegir el tipo de objeto a insertar (cada tipo se conoce como
plugin). Insertando un nuevo objeto creas un nuevo tipo de objeto. Mira Estructura del Proyecto
(Project Structure) para una descripción de la diferencia entre tipos y ejemplos de objeto.
También mira Plugin Reference para más información sobre plugings.

Los plugins se ordenan en grupos. Dentro de cada uno están ordenados alfabéticamente.
Seleccionando un ítem se muestra una breve descripción de lo que el plugin hace en el campo
Descripción (Description) en la parte baja del diálogo. Escribir en el cuadro de búsqueda de
arriba filtrará rápidamente la lista para ayudarte a encontrar lo que buscas.

El Nombre que introduces indica el nombre del tipo de objeto que aparecerá en el proyecto tras
insertarlo. Por defecto se nombrarán numéricamente como Sprite2, Sprite3, etc. Sería buena idea
darles nombres descriptivos para no confundirte más tarde. Puedes introducir un nombre
descriptivo en este cuadro, pero si no puedes renombrarlo también a través de la Barra de
propiedades o la Barra del proyecto.

Haz doble clic en un ítem para insertarlo. Si el objeto puede situarse en un plano y está abierta la
Vista de plano, el cursor se convertirá en una mira para situar el primer ejemplo del objeto. Para
objetos con imágenes o animaciones, tras haber situado el ejemplo el editor de imágenes o
animaciones aparecerá para poder diseñar sobre ella.

Otros tipos de objeto (como el teclado o un objeto de audio) no necesitan ser situados en el
plano. Tras insertarlos, el diálogo se cierra sin necesidad de situarlo. En su lugar aparecerá una
barra notificadora indicando que ya está disponible en todo el proyecto. Este tipo de objetos solo
pueden ser insertados una vez y desaparecerán de la lista si vuelves a abrir el diálogo.

3.10.15 Variable de ejemplo (Instance variable)

El diálogo de Añadir/Editar Variable de ejemplo te permite ajustar el nombre, tipo y valor


inicial de una variable de ejemplo en un tipo de objeto. Puede abrirse desde el diálogo de
Variable de ejemplo de objeto (Object Instance Variables dialog).

El Nombre (Name) identifica la variable de ejemplo. Ésto se escribe como expresiones tras el
nombre de objeto (por ejemplo, Sprite.MyVariable) para poder recuperar el valor de la variable.
Algunos nombres no se pueden usar si entran en conflicto con otras expresiones o
comportamientos de objeto.

El Tipo (Type) especifica qué tipo de valor tiene la variable. Una variable de objeto puede
almacenar Número (Number), Texto (Text)-(también llamado string) o Booleano (Boolean)-(un
valor on/off, también llamado flag). El tipo de una variable de ejemplo no cambia – por ejemplo,
no puedes almacenar texto en una variable numérica.

El Valor inicial (Initial value) es el primer número o inicial del texto o verdadero/falso en un
Booleano. El texto inicial se puede dejar vacio y si lo introduces no son necesarias comillas. En
otras palabras Hola es una entrada válida, pero si introduces “Hola” la inicial incluirá las
comillas. Nota que eso es diferente a si la expresión necesita comillas.

La Descripción (Description) es un comentario opcional que te describe brevemente para que se


usa la variable. Se muestra al lado del nombre en el editor para recordarte su uso. También se
muestra en la Barra de Propiedades cuando la variable está seleccionada.
3.10.16 (Nuevo proyecto) New project

El Diálogo de Nuevo proyecto aparece cuando creas un Nuevo proyecto. Te permite elegir entre
distintos tipos de proyecto.

Elige entre un proyecto de un solo archivo o una carpeta del proyecto. Ve a project types para
más información.

Un proyecto de un solo archivo puede crearse inmediatamente, pero una carpeta del proyecto
requiere que se cree la carpeta antes de empezarlo. Los proyectos de un solo archivo son mejores
para proyectos pequeños y los de carpeta para proyectos grandes. El tipo se puede cambiar en
cualquier momento eligiendo Guardar como proyecto (Save as project) o Guardar como un solo
archivo (Save as single file) en el Menú de Archivos.

3.10.17 Variables de ejemplo de objeto (Object instance variables)

El diálogo de Variables de ejemplo de objeto enumera todas las variables de ejemplo que un tipo
de objeto tiene. Se puede abrir desde la Barra de Propiedades mientras se muestran las
propiedades del objeto, o clicando el botón derecho en el objeto en la Barra del Proyecto o en la
Barra de Objeto y seleccionando Variable de ejemplo... (Instance variables...)

Las variables de ejemplo se pueden añadir con la barra superior o clicando el botón derecho y
seleccionando Añadir variable de ejemplo (Add instance variable). Esto abre el diálogo de
Añadir variable de ejemplo (Add Instance Variable dialog). La barra superior y el menú del
botón derecho también te permiten renombrar (rename)-F2 o borrar (delete)-Del variables de
objeto. Haz doble clic en una variable de ejemplo de la lista para editarla.

Las variables de ejemplo pueden reordenarse usando los botones Arriba (Up) y Abajo (Down) en
la barra, o arrastrándolas y soltándolas. El orden es solo para organización – no afecta a cómo
funcionan.

Si todos los ejemplos de un tipo de objeto tienen el mismo valor inicial para una variable de
ejemplo, se mostrará en la columna Valor inicial (Initial Value). De todas formas, los ejemplos
pueden tener diferentes valores iniciales ajustados en la Barra de Propiedades. Si es así la
columna Valor inicial (Initial value) mostrará <varies>. Editar una variable de ejemplo variando
los valores y cambiando el valor inicial en el diálogo de Editar variables de ejemplo dará un
nuevo valor inicial para todos los ejemplos, sobrescribiendo los valores previos.

3.10.18 Comportamientos de Objeto (Object behaviors)

El diálogo de Comportamientos de Objeto enumera todos los comportamientos que tiene un tipo
de objeto. Se puede abrir desde la Barra de Propiedades mientras se muestran las propiedades del
objeto o clicando el botón derecho en el objeto en la Barra del Proyecto o en la Barra de Objeto y
seleccionando Comportamientos… (Behaviors…) Para información sobre los comportamientos,
ve a la sección Behavior Reference.

Los Comportamientos se pueden añadir con la barra superior o clicando el botón derecho y
seleccionando Añadir comportamiento (Add behavior). Esto abre el diálogo de Añadir
Comportamiento. La barra y el menú del botón derecho también te permiten renombrar
(rename)-F2 o borrar (delete)-Del comportamientos. El comportamiento aparece por su nombre
en el sistema de eventos.

Los comportamientos se pueden reordenar usando los botones Arriba (Up) y Abajo (Down) en la
barra, o arrastrándolas y soltándolas. El orden es solo para organización – no afecta a cómo
funcionan.
3.10.19 Parámetros (Parameters)
El diálogo de parámetros aparece después del diálogo de añadir condición o acción, o cuando
editas una condición o acción. Te permite introducir parámetros como las coordinadas X e Y
para Ajustar la posición (Set position) de los objetos (sprite). No aparece para acciones o
condiciones que no usen parámetros, como Destruir (Destroy). Se introducen expresiones, que
pueden ser cualquier cosa, desde un único valor numérico a una sofisticada cuenta matemática.

El panel de expresiones (expressions panel) aparece al lado del diálogo de parámetros dándote
una lista de todas las expresiones que puedes introducir. Por defecto, el panel de expresiones está
difuminado a menos que pases el ratón sobre él. También se puede esconder o mostrar pulsando
F4.

Usa el panel de expresiones para localizar expresiones del sistema, expresiones de objeto,
expresiones de comportamiento, variables locales o globales o variables de ejemplo. También
puedes usar autocompletar (autocomplete): tecleas una expresión hasta el punto (por ejemplo
Sprite.) y aparecerá una lista de todas sus expresiones. Esta lista muestra las expresiones de
objeto, sus variables de ejemplo y los comportamientos. Usa las flechas arriba y abajo del
teclado para seleccionar una y Enter para entrar en ella.
Algunas expresiones también tienen consejos para ayudarte a recordar cómo usarla. Aparece
cuando escribes un paréntesis abierto ( al lado de la expresión. Esto es muy útil en expresiones
del sistema que suelen tener muchos parámetros.

Pulsa el tabulador para ir al siguiente parámetro o Shift + Tabulador para ir a la anterior. Enter es
un acceso directo de presionar Hecho (Done) – quizás tengas que pulsa Enter dos veces si estás
usando autocompletar: una para elegir la entrada de autocompletar y otra para cerrar el diálogo.

3.10.20 Preferencias (Preferences)


El diálogo de preferencias contiene ajustes para el editor de C2. Se puede abrir desde el Menú de
archivos. Los ajustes están organizados en 3 pestañas: General (General), Exportador HTML5
(HTML5 exporter) y Copia de seguridad (Backup).
General
Esta sección contiene ajustes generales de C2.

Cambiar el tamaño de los controladores de tamaño (Resize handle size)


Cambia el tamaño de los controladores de tamaño en la Vista de Plano. Por defecto es Pequeño
(Small).

Fuente de la Hoja de evento (Event sheet font)


Cambia la fuente usada en la Vista de Hoja de evento. Por defecto es Segoe UI, 9pt.

Mostrar la página de inicio al ejecutar (Show start page on startup)


Si lo seleccionas, la página de inicio siempre aparecerá al ejecutar C2. Si lo deshabilitas,
aparecerá una pantalla vacía al inicio.

Cerrar la página de inicio cuando clicas en algo (Close the start page when I click on something)
Si lo seleccionas, la página de inicio se cerrará en cuanto cliques alguno de los enlaces (por
ejemplo, un proyecto reciente). Si no, la página de inicio continuará abierta.

Comprobar actualizaciones (Update checking)


Elige una opción entre:
Don't for updates: C2 no accederá a internet para buscar nuevas versiones. Esto no se
recomienda pues las nuevas versiones suelen incluir mejoras significativas.
Check for beta updates: Buscará nuevas versions betas, para pruebas de Scirra.
Check for updates: Buscará nuevas versiones de Scirra que ya han sido probadas por otra gente.
Restaurar diálogos (Reset dialogs)
Clica este botón para restaurar todos los diálogos y barras en la interfaz a su posición y tamaño
por defecto. Se te preguntará para que lo confirmes, y después debes reiniciar C2 para que los
cambios se apliquen. Esto es útil si quieres volver a los valores por defecto. Si por alguna razón
los diálogos tienen fallos o simplemente no aparecen cuando los intentas abrir, restaurar con esta
opción puede solucionarlo.

HTML5 exporter

Esta sección contiene ajustes para el exportador de HTML5, además de los servidores locales
para la vista previa.
Navegador por defecto de vista previa (Default previewer browser)
Elige los ajustes del navegador de vista previa de tus nuevos proyectos. Esto no afecta a ningún
proyecto ya existente.

Navegador personalizado (Custom browser)


Elige cualquier archivo ejecutable del disco para hacer una vista previa cuando el Navegador de
vista previa está en Personalizar (Custom). Por ejemplo, quizás quieras instalar un navegador en
pruebas (beta) junto a la versión estable y así tienes la opción de hacer la vista previa en el beta.
Además, a veces C2 no detecta los navegadores tradicionales aunque estén instalados, así que
puedes especificarlo manualmente aquí.

Carpeta de exportación por defecto (Default export folder)


Elige la carpeta para exportar en el Diálogo de exportación de proyectos. Por este camino
<project name> se sustituye por el nombre del proyecto, o el nombre del proyecto se agregará a
la ruta si no está presente. La opción predeterminada es el escritorio.

Puerto del servidor HTTP (HTTP server port)


El puerto que usar al hacer una vista previa. Por defecto es 50000. No debes cambiarlo a menos
que sepas que hay alguien más que usa este puerto en tu ordenador. C2 también probará los
siguientes 100 puertos si el elegido está en uso. Debes reiniciar C2 antes de que se apliquen los
cambios.

Vista previa de la dirección LAN (Preview on LAN address)


Introduce la dirección IP de tu ordenador en red de área local (LAN) para permitir compartir la
vista previa con cualquier dispositivo en tu LAN. Clica el botón de la derecha para ver una lista
de posibles direcciones IP de tu ordenador. Para usar esta función, también debes permitir que el
puerto del servidor HTTP pase a través del Firewall, y C2 debe funcionar con los permisos del
administrador. Si no, introduciendo localhost solo puedes ver la vista previa en tu ordenador,
pero no requiere permisos. Para más información sobre como ajustar y usar esta función, mira el
tutorial How to preview on a local network ⇗.
Copia de Seguridad (Backup)

Esta sección contiene ajustes que te ayudan a fijar una copia de seguridad automática para tu
trabajo. Esto es esencial para mantenerlo a salvo de fallos del hardware, robos, fuegos o
inundaciones. Para más información, mira el tutorial Keep your work safe with Construct 2's
backup options ⇗.

Copia de seguridad automática (Auto-backup)


Guarda copias de seguridad de archivo único (.capx) en la misma carpeta que tu proyecto
siempre que seleccionas “Guardar” (“Save”). Tienen la extensión .capx.backupN. Por ejemplo, si
se han creado 3 copias, myfile.capx.backup1 será la última guardada, myfile.capx.backup2 será la
penúltima y myfile.capx.backup3 la antepenúltima. Por defecto, C2 siempre conserva una copia,
permitiéndote recuperar el trabajo desde ahí. De todas formas, puedes perder tus copias de
seguridad a la vez que el proyecto, por lo que se recomienda guardar estas copias, de vez en
cuando, en un disco externo o similar.

Carpetas de copias de seguridad (Backup folders)


Para asegurar tu trabajo, es vital guardar tus copias en distintos lugares, como otro ordenador o
un disco duro. (Subiéndolas a Dropbox están totalmente protegidas). Para ayudarte a hacer esto,
C2 puede guardar tus copias en diferentes carpetas a intervalos regulares. Puedes elegir 3
carpetas y el inte4rvalo de guardado. Las copias se guardan en un solo archivo (.capx) más un
texto al azar para evitar dos archivos con el mismo nombre que puedan sobreimprimirse (por
ejemplo, myfile-abc123.capx y myfile-def456.capx). Nota: las copias sólo se realizan si
seleccionas “Guardar” (“Save”). Simplemente abriendo un archivo que otra persona te ha
enviado no crea una copia de seguridad, debes modificarlo y darle a “Guardar” (“Save”).
3.11 Accesos directos de teclado (Keyboard
Shortcuts)
General
Ctrl + X Cortar (Cut)
Ctrl + C Copiar (Copy)
Ctrl + V Pegar (Paste)
Ctrl + Arrastrar el ratón con el botón derecho Duplicar (Duplicate)

Ctrl + Z Deshacer (Undo)


Ctrl + Y Rehacer (Redo)

Ctrl + A Seleccionar todo (Select all)

Ctrl + N Nuevo proyecto (New project)


Ctrl + O Abrir proyecto (Open project)
Ctrl + S Guardar proyecto (Save project)

Alt + F4 Cerrar C2 (Close Construct 2)

También puedes presionar Alt para navegar por la barra de herramientas. Cuando lo presionas,
aparecen las teclas de acceso directo de cada herramienta.

F4 Vista previa desde el primer plano (Preview project from first layout)
F5 Vista previa del plano actual (Preview current layout)
F6 Exportar proyecto (Export project)

Ctrl + Rueda del ratón hacia arriba o Números del teclado + Más Zoom
Ctrl + Rueda del ratón hacia abajo o Números del teclado – Menos Zoom
Añadir shift para ajustar la distancia del zoom.

Ctrl + 0 Regreso al zoom 100% (Return to 100% zoom)

Arrastar el botón central del ratón o Mantener pulsado espacio y mover el ratón Mueve la vista
(Pan the view)

Borrar Borrar elementos seleccionados (Delete selected items)


F2 Renombrar el element seleccionado (Rename selected item)

Ctrl + clic Añade o elimina de la selección el elemento clicado


Shift + clic Como el anterior, pero en la Vista de hoja de eventos selecciona todo entre lo último
seleccionado y el clic.

Escape Cancelar el movimiento, la situación o la búsqueda de eventos.

Ctrl + Tab Ir a la siguiente pestaña a la derecha.


Ctrl + Shift + Tab Ir a la siguiente pestaña a la izquierda.
Vista de plano (Layout view)
Mirar también: Layout View

Ctrl + E o Shift + Tab Ir a la Hoja de eventos asociada.

Flechas del teclado (Arrow keys) Mueve el objeto seleccionado 1 píxel – mantén shift pulsado
para 10 píxeles.

Mantén shift mientras cambias el tamaño para mantener la proporcionalidad


Mantén shift mientras rotas para girar de 5 en 5 grados.
Mantén shift mientras arrastras para mover sobre el eje (sólo a lo largo o en diagonal)

Ctrl + D Deseleccionar todo (Unselect all)

Vista de hoja de eventos (Event Sheet View)


Ver también: Event Sheet View

Ctrl + L o Shift + Tab Ir al plano asociado (si hay – algunas hojas de eventos no tienen)

Flecha del teclado hacia arriba y hacia abajo Mueve la selección arriba y abajo en la hoja
Flecha del teclado izquierda y derecha Mueve la selección a ambos lados de la hoja entre
eventos, condiciones y acciones.

Enter Editar el elemento seleccionado

Escape Borrar la búsqueda de eventos

A Añadir acción (Add action)


B Añadir subevento vacío (Add blank subevent)
C Añadir condición (Add condition)
D Deshabilita los elementos seleccionados (Toggle selected items disabled)
E o Numeración del teclado + Añadir elemento debajo (Add event below)
Shift + E o Numeración del teclado – Añadir elemento arriba (Add event above)
G Añadir grupo (Add group)
I Invertir la selección (Invert selected conditions)
N Añadir inclusión (Add include)
Q Añadir comentario (Add comment)
S Añadir subevento (Add subevent)
V Añadir variable (Add variable)
X Añadir “Más” (“Else”) evento tras evento (Add 'Else' event following selected event)
Y Bloquear (Toggle 'Or' block)

Diálogo de parámetros (Parameters dialog)


El diálogo de parámetros es donde introduces expresiones, por ejemplo las coordenadas X e Y.
F4 Hace visible el panel de expresiones. Muestra todas las expresiones que puedes usar.

Tab Parámetro siguiente


Shift + Tab Parámetro anterior
Escape Cancelar (Cancel)
Enter Hecho (Done)

Editor de imágenes y animaciones (Image and Animations editor)


Ver también: Image and Animations editor

Asigna rápidamente el origen y los puntos de imágen:


Número del teclado 1 o Fin (End) Abajo a la izquierda
Número del teclado 2 Abajo
Número del teclado 3 o Avanzar página (Page down) Abajo a la derecha
Número del teclado 4 Izquierda
Número del teclado 5 Centro
Número del teclado 6 Derecha
Número del teclado 7 o Inicio (Home) Arriba a la izquierda
Número del teclado 8 Arriba
Número del teclado 9 o Retroceder página (Page up) Arriba a la derecha
Flechas del teclado Mover 1 píxel
Mantén Shift para aplicar estos puntos a la animación completa. Shift + Clic también lo hace.

Shift + Botón recortar (Crop button) Recorta la animación completa


Shift + Botón espejar (Mirror button) Espeja la animación completa
Shift + Botón voltear (Flip button) Voltea la animación completa
Shift + Rotar en el sentido de las agujas del reloj (Rotate Clockwise button) Rota la animación
completa en el sentido de las agujas del reloj.
Shift + Rotar en el sentido contrario a las agujas del reloj (Rotate Anticlockwise button) Rota la
animación completa en el sentido contrario a las agujas del reloj.

Sólo para animaciones:


Ctrl + Izquierda o – Frame anterior
Ctrl + Derecha o + Frame siguiente
P Hacer vista previa
4. Proyectos primitivos
Esta sección reúne todos los primitivos (elementos básicos) de los proyectos. Estos primitivos
ofrecen los bloques con los que se forman juegos complejos. Para una vista por encima ver el
apartado Estructura del Proyecto (Project structure) de la sección Resumen.

C2 usa un sistema de eventos de programación libre para diseñar. Si no conoces el sistema de


eventos, la sección Cómo funcionan los eventos (How events work) te lo explica.

4.1 Proyectos
Un proyecto es un juego o aplicación completa hecha con C2. Los proyectos contienen todos los
elementos que componen el juego, desde eventos a archivos de sonido. Se muestra un resumen
del proyecto en la Barra del Proyecto y allí se pueden añadir, renombrar, eliminar y ordenar en
carpetas los elementos. Mira la Estructura del Proyecto (Project structure) para ver un resumen
de todos los elementos. A continuación se tratan más detalles sobre cada una de las partes.
Los proyectos se pueden abrir, cerrar y exportar desde el Menú de archivos. Mira también
Guardar y compartir proyectos (Saving and sharing projects) y Exportar y publicar (Exporting
and Publishing). Si estás interesado en aspectos técnicos ve a la sección Tecnología
(Technology). Se recomienda seguir los consejos de Buenas Prácticas (Best practices) cuando
trabajas en un proyecto.

Propiedades del proyecto


Las propiedades del proyecto se pueden editar en la Barra de Propiedades tras seleccionar el
nombre del proyecto en la Barra del Proyecto o usando los accesos directos de las propiedades
del proyecto en las propiedades del plano.

El Nombre (Name), Autor (Author) y Descripción (Description) se usan en algunas opciones de


exportado, así que asegúrate de rellenarlos correctamente.

Nombre (Name)
El nombre o título del proyecto.

Autor (Author)
El nombre de la persona o equipo que desarrolla el proyecto.

Descripción (Description)
Una frase o dos que resuman el proyecto.

Versión (Version)
Un número que identifique la versión o revisión del proyecto. Puedes usarlo para tus propias
copias pero a veces es útil al exportar para identificar una nueva versión del mismo proyecto. Es
buena idea incrementar el número cuando publiques una nueva versión.
Primer plano (First layout)
Selecciona que plano es el primero en aparecer cunado exportes el proyecto. Cuando haces una
vista previa en el editor suele ser de un solo plano específico, así que este ajuste no se aplicará
hasta la exportación.

Redondeo de píxeles (Pixel rounding)


Por defecto los objetos de C2 pueden situarse en posiciones con decimales (por ejemplo, 100,3 o
200,8). Si el navegador usa un filtro lineal, el píxel puede verse borroso. Si seleccionas
Redondeo de píxeles (Pixel rounding) los objetos de C2 redondearan su posición a un número
entero (por ejemplo, 100 o 201). Esto evita que se vea borroso y que se solapen objetos en la
cuadrícula. Nota que esto no afecta a las coordenadas X e Y, que pueden seguir estando entre
píxeles – sólo afecta cuando los objetos aparecen en la pantalla.

Usar un plano de carga (Use loader layout)


Usa un Primer plano especial que se muestre mientras el resto de planos se cargan. La expresión
del sistema proceso de carga (loadingprogress) muestra el proceso de 0 a 1 (0,5 sería la mitad).
Para más información, mira el tutorial how to make a custom loading screen ⇗.

Tamaño de la ventana (Window size)


El tamaño de la ventana en el juego, en píxeles. Solo se aplica si la Pantalla completa del
navegador (Fullscreen in browser) está apagada. Aparece una línea discontinua en la Vista de
Plano indicando el tamaño.

Navegador para la vista previa (Preview browser)


Elige que navegador se utiliza para hacer una vista previa de tu proyecto. Aparecen todos los
navegadores más usados para Windows. Marca por defecto (default) para usar el navegador por
defecto de tu sistema. Marca personalizar (custom) para usar un navegador personalizado en
Preferencias (Preferences). Se recomienda probar el proyecto en varios navegadores antes de
lanzarlo.

Pantalla complete en el navegador (Fullscreen in browser)


En vez de mostrar el proyecto en un rectángulo dentro de la web (si esta opción está
deshabilitada), se puede utilizar el navegador completo. Hay dos formas: Modo de recorte (Crop
mode) que simplemente hace la ventana más grande, o Modo de escala (Scale mode) que
también escala el contenido de la ventana para que se ajuste a la pantalla. Para más información
mira el tutorial supporting multiple screen sizes ⇗.

Uso de pantalla de retina iOS (Use iOS retina display)


Algunos dispositivos iOS, como el iPhone 4S o el iPad 3 usan pantallas de alta resolución
“retina”. Aquí la resolución es doble y hay 4 píxeles por cada píxel de un dispositivo normal. Si
esta en Sí el Uso de pantalla retina de iOS el juego se cargará usando la resolución total del
dispositivo, y el ancho y alto de la ventana será doble (así que debes usar diferentes tamaños de
ventana – mira supporting multiple screen sizes ⇗). Si está en No el juego cargará a una
resolución más baja. Entonces se estirará para ocupar toda la pantalla (con filtro bilineal). La
baja resolución mejorará el rendimiento pero no usa los gráficos más nítidos de estas pantallas.
Por defecto la opción está en Sí pero si tu trabajo no es para pantallas de retina, quizás quieras
apagarlo para mejorar el rendimiento.

Habilitar WebGL (Enable WebGL)


Habilita el WebGL más rápido y potente que puedas. Se usará el lienzo canvas 2D se si WebGL
no se puede usar. Mira la sección Tecnología (Technology) para más información sobre lienzos.
Si WebGL está habilitado, también se podrá hacer vista previa de los efectos en la Vista de
plano.

Muestra (Sampling)
Elige entre muestra linear (nítida) o point (pixelada) cuando cambies el tamaño de las imágenes.
Se recomienda linear para juegos modernos con gráficos de alta resolución y point para juegos
retro que usan bloques pixelados.

Estilo del cargador (Loader style)


Cambia el cargador por defecto que se muestra cuando el juego está cargando o mientras el
propio plano de carga todavía está cargando. Mira el tutorial how to make a custom loading
screen ⇗.

Aclarar fondo (Clear background)


Salta “aclarar fondo” al principio de cada frame. Esto es útil para mejorar el rendimiento en
móviles (mira Consejos sobre rendimiento Performance Tips). Cada vez, el frame se convierte en
negro claro, después en el color de la capa de abajo (si no es transparente) y finalmente en el
suyo propio. “Aclarar fondo” indica si hacer el primer paso. La propiedad de capa “transparente”
indica si hacer el segundo paso. Si todos los planos contienen capas opacas puedes seleccionar
“No” en “Aclarar fondo” ya que la capa de fondo siempre aclarará la pantalla. Si los planos son
totalmente opacos por sprites u otros objetos, puedes ajustar todas las capas a transparente para
saltar ambos pasos. En este caso, ningún área descubierta por los objetos tendrá fallos o estará
llena de pixeles extra.

4.2 Planos
Un plano se conformas de un diseño de objetos. Puede corresponder a un nivel del juego, al
menú o a una pantalla de títulos. En otras herramientas también pude significar escenas,
habitaciones, frames o etapas. Se pueden añadir, renombrar y borrar en la Barra del Proyecto.
Los planos se editan en la Vista de plano. Cada plano tiene una hoja de eventos asociada que
define como funciona.
Los planos contienen diversas capas. Los objetos que aparecen en la pantalla no pertenecen
directamente al plano, si no a la capa que está en el plano.
Los planos no tienen un fondo de color. Para asignar un color al fondo, haz que la capa de abajo
sea opaca y asígnale un color. Se puede hacer en la Barra de Capas.
También se le pueden aplicar efectos, que se aplican a todos los elementos que aparecen en la
pantalla.
Layout properties
Las propiedades de un plano se pueden editar en la Barra de Propiedades tras clicar un espacio
en el plano o seleccionando el nombre del plano en la Barra del Proyecto.

Nombre (Name)
El nombre del plano.
Hoja de eventos (Event sheet)
La Hoja de eventos asociada que define como funciona el plano. Estas hojas se pueden usar en
más de un plano usando incluye (includes) en planos con los mismos eventos.

Capa activa (Active layer)


Esta es la capa en la que se sitúan los objetos. Se selecciona en la Barra de Capas. La activa se
muestra en la Barra de Estado mostrándose también consejos cuando introduces un nuevo objeto.
Todos los objetos nuevos se añaden a la capa activa.

Desplazamiento ilimitado (Unbounded scrolling)


Por defecto la ventana del juego no puede desplazarse más allá de los límites del plano.
Selecciona “Sí” (“Yes”) para permitir un desplazamiento sin límites, incluso fuera de los límites
del plano.

Tamaño del plano (Layout size)


El tamaño, en píxeles, del área del plano. Aunque esté seleccionado el desplazamiento ilimitado,
esto sigue afectando a la parte del plano que se muestra en la Vista de plano.

Márgenes (Margins)
El tamaño, en píxeles, de los márgenes, que son las áreas grises fuera del plano. Sólo se ven en la
Vista de plano y no aparecen al hacer la vista previa.

Propiedades del proyecto (Project properties)


Un acceso rápido para ver las propiedades del proyecto.

4.3 Capas
Una capa es como una lámina de cristal en la que se sitúan los objetos. Se pueden usar para
superponer diferentes grupos de objetos, tanto en el fondo como en el primer plano. Las capas
pertenecen a un plano y se editan en la Barra de Capas. Se pueden desplazar a ritmos diferentes
para crear efectos de paralaje, así como escalar o girar, todo para conseguir efectos visualmente
más poderosos en los juegos.
También son importantes para añadir interfaces estáticas (o HUDs o UIs) a juegos dinámicos.
Una capa con el paralaje a 0, 0 no se moverá, así que cualquier objeto en ella siempre estará en
el mismo lugar.
Un conjunto común de capas sería:
HUD (capa superior – barra de vida del personaje, información UI, etc)
Primer plano (los objetos principales del juego)
Plano intermedio (capa de fondo con paralaje)
Fondo (última capa – el fondo)

También se pueden aplicar efectos a las capas, que afectan a todo el contenido de la capa.
Propiedades de capa
Las propiedades de la capa se pueden editar en la Barra de Propiedades tras clicar la capa en la
Barra de Capa. Nota que esto modifica cual es la capa activa – mira las propiedades de la capa
activa en Propiedades del Plano.

Nombre (Name)
El nombre de la capa, para referirte a ella en el sistema de eventos.

Visibilidad inicial (Initial visibility)


Si la capa es visible o no al inicio cuando haces la vista previa. Esto es diferente de la
propiedad Visible en el editor (Visible in editor) que sólo afecta a la Vista de plano.

Color del fondo (Background color)


El color de fondo para la capa. Este paso se ignora si la transparencia está activa.

Transparencia (Transparent)
Ignora el color de fondo y hace que la capa sea transparente.

Opacidad (Opacity)
Ajusta la opacidad (o semitransparencia) de la capa, de 0 (invisible) a 100 (opaca).

Forzar la textura (Force own texture)


Fuerza a la capa a mantener cierta textura en vez de mostrarla directamente en la pantalla. Es útil
para algunos efectos. Aunque disminuye la velocidad de renderización, así que debes seleccionar
“No” a menos que sea necesario.

Índice de escala (Scale rate)


Cambia el índice al que está escalada la capa si es el caso en la capa o plano, parecido al paralaje
pero para el zoom. Un índice de escala a 0 significa que la capa siempre estará a escala 100%
aunque se aplica un escalado. Un índice de escala 100 significa que se escalará tanto como
indiques.

Paralaje (Parallaz)
Cambia el índice al cual se desplaza la capa en dirección vertical y horizontal. En un paralaje de
100,
100 significa desplazamiento normal, 0,0 significa que no se mueve (útil para UIs), 50 significa
que se mueve a la mitad de velocidad, etc. También es útil para múltiples fondos en movimiento.

Visible en el editor (Visible in editor)


Si se muestra la capa o no en la Vista de plano. Nota que esto es diferente a la Visibilidad
inicial (Initial visibility) que sólo afecta a la vista previa. Se puede acceder también a través de
la Barra de capas.

Bloqueada (Locked)
Si una capa está o no bloqueada en la Vista de plano. Los objetos en capas bloqueadas no se
pueden seleccionar. Se puede acceder también a través de la Barra de capas.
Paralaje en el editor (Parallax in editor)
Si está habilitado, las propiedades del paralaje también se aplicarán a la Vista de plano,
permitiéndote hacer una vista previa de cómo se verían los efectos.

4.4 Objectos
En C2 los objetos son lo más útil en un proyecto. La mayoría de las cosas que ves en un juego
de C2 son los objetos, incluyendo los objetos ocultos con otros propósitos (por ejemplo el audio
de fondo).

Cuando introduces un nuevo objeto, eliges en primer lugar un plugin en el diálogo (por ejemplo,
Sprite). Esto crea un tipo de objeto (por ejemplo, EnemigoTroll-TrollEnemy). Cuando el ratón
se convierte en una mira puedes situar el primer ejemplo y puedes duplicarlos para crear más
ejemplos del mismo tipo.

Las diferencias entre tipo y ejemplo de objeto son esenciales para usarlos correctamente. Los
objetos constan de varias partes, explicadas debajo. También hay secciones del manual que dan
más detalles de cada una.

Plugins
Un plugin se define como objeto. Por ejemplo, un Sprite es un tipo de objeto, y un Audio es otro
distinto. Se definen como Sprite plugin y Audio plugin respectivamente.
Los programadores de Javascript pueden crear plugins nuevos (y comportamientos) usando
Javascript SDK.

Tipos de objeto (Objects type)


Los tipos de objetos definen la “clase” del objeto. Por ejemplo, EnemigoTroll (TrollEnemy) y
EnemigoOgro (OgreEnemy) pueden ser tipos distintos del plugin Sprites. Tienen animaciones
distintas y se les pueden aplicar eventos de forma individual para hacerlos parecer y actuar
distintos, a pesar de pertenecer ambos a Sprites.

Ejemplos (Instances)
Usando el ejemplo anterior, si hay cuatro objetos de EnemigoTroll en un plano, estos son
ejemplos del tipo de objeto EnemigoTroll. Sólo hay un tipo EnemigoTroll. Así mismo, puede
haber múltiples ejemplos del tipo de objeto EnemigoOgro.

Variables de ejemplo (Instances variables)


Las variables de ejemplo se añaden al tipo de objeto y almacenan números o textos por cada
ejemplo. Por ejemplo, si quieres que todos los monstruos tengan su propio contador de salud
(health counter) debes añadir la variable de ejemplo salud (health). Esto es esencial para hacer
los juegos más interesantes – cada ejemplo actuará de diferente forma.

Comportamientos (Behaviors)
Se pueden añadir comportamientos a los tipos de objeto para añadir cierta funcionalidad. Por
ejemplo la Dirección 8 (8 direction) se puede añadir a un Sprite, y podrá ser movido con las
flechas del teclado. Esto ayuda a agilizar el desarrollo e incrementa la productividad. Los
comportamientos no están para hacer todo por ti: en el sistema de eventos es donde la mayoría de
la lógica del juego se define. Los comportamientos son, básicamente, atajos. La mayoría de ellos
pueden repetirse con eventos, pero así ahorras más tiempo. Los comportamientos son muy
personalizables, si uno de ellos no hace exactamente lo que quieres que haga, puedes
personalizarlo usando un evento.

Todos los ejemplos y tipos de objetos usan comportamientos. No puedes añadir


comportamientos solo a algunos ejemplos – aunque quizás puedas habilitarlos y deshabilitarlos
en cada uno de ellos.

Efectos (Effects)
Los efectos cambian la apariencia visual del objeto. No funcionan en todas las plataformas,
porque requiere WebGL. Se pueden ajustar los recursos para que todo aparezca razonablemente
bien aunque no funcione WebGL. Nota que los efectos son distintos de mezclar movimientos
(blend move) que funciona en todas las plataformas.

Familias (Families)
Las familias son grupos de tipos de objeto. Te ayudan a repetir eventos en distintos tipos de
objetos en grandes proyectos.

4.4.1 Plugins
Los plugings son los objetos. Por ejemplo, un Sprite es un tipo de objeto, y un Audio es otro
distinto. Se definen como Sprite plugin y Audio plugin respectivamente. Mira Referencia de
plugings (Plugin reference) para más información de cada uno.

Los programadores de Javascript pueden crear plugins nuevos (y comportamientos) usando


Javascript SDK.

La mayoría de los plugings definen sus propiedades en la Barra de Propiedades. Para ver una
lista completa, sitúa el pluging en Referencia de plugings (Plugin reference).

Hay tres tipos de plugings:


Visuales (Visual plugings) como los Sprites, que aparecen físicamente en el plano y la pantalla.
Escondidos (Hidden plugings) como la Matriz (Array), que se sitúan en un plano en particular
pero no aparecen en la pantalla.
Del proyecto completo (Project-wide plugings) como el Ratón o el Audio, que se añaden a
todo el proyecto una sola vez. Solo puede haber un tipo de objeto y ejemplo de este tipo de
plugings. Solamente proporcionan una capacidad (como poder usar el ratón). Son muy útiles en
el sistema de eventos.

C2 está diseñado modularmente. Esto significa que no hay mucha funcionalidad: debes insertar
un plugin antes de poder usar sus funciones. Por ejemplo, no puedes reproducir ningún audio
antes de añadir el plugin de Audio al proyecto. Hacerlo puede parecer innecesario, pero hay
muchos plugings del proyecto completo y no todos los proyectos necesitarán todos. Por ejemplo,
si el plugin de Audio se aplicara automáticamente en cada proyecto, los que no lo necesiten
gastarían rendimiento, espacio en el disco y demás. Así que recuerda que si no añades un plugin
no estará realmente en el proyecto y hará que este sea más ligero y eficiente al exportar.

4.4.2 Tipos de objeto


Los tipos de objeto son la parte central del diseño de juegos en C2. Definen la “clase” de un
objeto. Por ejemplo, EnemigoTroll (TrollEnemy) y EnemigoOgro (OgreEnemy) pueden ser tipos
distintos del plugin Sprites. Tienen animaciones distintas y se les pueden aplicar eventos de
forma individual para hacerlos parecer y actuar distintos, a pesar de pertenecer ambos a Sprites.

Hay múltiples ejemplos de un tipo de objeto en el proyecto. Por ejemplo, quizás quieras que
haya cuatro objetos de EnemigoTroll esperando al jugador. Estos cuatro ejemplos comparten la
animación, imágenes, comportamientos, variables de ejemplo y eventos. (En el caso de las
variables de ejemplos, cada ejemplo almacena un valor único – como la salud- y
comportamientos que funcionan independientemente del resto de ejemplos.)
Los tipos de objeto no tienen una posición, ángulo o tamaño. Estas son propiedades de los
ejemplos de ese tipo de objeto. La Barra del proyecto y la Barra de objeto muestran los
diferentes tipos de objetos del proyecto, pero no los ejemplos.

Los eventos son para añadir a un tipo de objeto. El evento filtra los ejemplos que cumplen esa
condición. Por ejemplo, el evento “Bala impacta en el Alien” ("Bullet collides with Alien") se
aplica a todos los ejemplos de los tipos de objeto “Bala” (“Bullet”) y “Alien”. Aunque cuando
el evento funciona, las acciones solo se aplican a los ejemplos específicos envueltos en el
impacto. Para más información ve a Cómo funcionan los eventos (How events work).

Los tipos de objeto pueden agruparse en familias. Te puede ayudar a evitar repetir los mismos
eventos en diferentes tipos de objeto.

4.4.3 Ejemplos
Los ejemplos son los objetos reales que puedes ver en el juego: un ejemplo de un tipo de objeto.
Por ejemplo, si hay cuatro EnemigoTroll en un plano, hay cuatro ejemplos del tipo de objeto
EnemigoTroll.

Son los ejemplos los que tienen una posición, ángulo y tamaño en el plano. Los tipos de objetos
no tienen estas propiedades – solo definen la “clase” de objeto.

Se pueden crear ejemplos en el tiempo de ejecución en el sistema de eventos (por la acción Crear
Objeto (Create Object) y Generar objeto (Spawn an objet)). También puedes prepararlos de
antemano en los planos con la Vista de plano para diseñar niveles y pantallas de título.

Seleccionando un ejemplo en la Vista de plano muestras sus propiedades en la Barra de


Propiedades. Hay un conjunto de propiedades común a todos (o casi todos) los objetos, y algunas
propiedades inherentes al plugin. Las propiedades más comunes se definen abajo, y las
inherentes al plugin se describen en Referencia de plugins (Plugin reference.)
Propiedades de ejemplo communes
Las siguientes propiedades son comunes a la mayoría de los objetos, dependiendo de sus
capacidades.

Nombre (Name)
El nombre del tipo de objeto al que pertenece.

Plugin
Un recordatorio del plugin al que pertenece.

Global
Por defecto, todos los ejemplos se destruyen cuando finaliza el plano (cuando se pasa al
siguiente). Si está seleccionado Global ninguno de los ejemplos de ese tipo de objeto se destruirá
al cambiar.

Capa (Layer)
La capa en la que está situado el ejemplo.

Ángulo (Angle)
El ángulo en grados en el que está orientado el ejemplo. También puede cambiarse por el ángulo
en la Vista de plano.

Opacidad (Opacity)
La opacidad del objeto (o semitransparencia) de 0 (tranparente) a 100 (opaco).

Posición (Position)
Las coordenadas X e Y en el plano, en píxeles. Se mide desde el origen del objeto (mirar puntos
de imagen). También pueden cambiarse moviendo el ejemplo en la Vista de plano.

Tamaño (Size)
La altura y anchura de los ejemplos, en píxeles. También se puede modificar recortando el
tamaño en la Vista de plano cuando el ejemplo está seleccionado.

Editar variables (Edit variables)


Abre el diálogo de Variables de ejemplo de objeto.

Editar comportamietnos (Edit behaviors)


Abre el diálogo de Comportamientos de objeto.

Editar efectos (Edit effects)


Abre el diálogo de Efectos.
4.4.4 Variables de ejemplo
Las variables de ejemplo se añaden a los tipos de objeto pero almacenan números, textos o
booleanos (on/off) a cada ejemplo de forma individual. Esto los hace ideales para contadores de
salud (health counters) ya que cada ejemplo tiene su propio valor. Las variables de ejemplo se
añaden con el diálogo de Variables de ejemplo de objetos y el valor inicial de cada ejemplo
puede introducirse en la Barra de propiedades.

Las variables de objeto también se pueden usar para ayudar a controlar los ejemplos. Por
ejemplo, una variable de ejemplo booleana puede usarse para determinar si un enemigo caza al
jugador (verdadero-true) o si escapa (falso-false). Si todos los ejemplos tienen diferentes
valores, la condición aplicada variable de ejemplo booleana puede usarse para aplicar acciones a
enemigos que cazan al jugador. Invirtiendo la condición (seleccionando ejemplos con el valor
falso-false) se pueden usar para aplicar acciones a enemigos que escapan. El resultado final es un
número de ejemplos del mismo tipo actuando de forma independiente: algunos cazarán y otros
escaparán. Éste es un ejemplo sencillo, pero se puede aplicar a casos más complicados.

En otras palabras, el estado de un ejemplo se puede controlar usando variables de ejemplo.

Las variables de ejemplo también pueden agruparse en familias. Todos los tipos de objeto en la
familia tendrán la misma variable de ejemplo.

4.4.5 Comportamientos
Los comportamientos dan a los tipos de objeto una funcionalidad concreta. Se pueden añadir
con el Diálogo de comportamientos de objeto. Mira la Referencia de comportamientos (Behavior
reference) para más información sobre cada uno.

Un ejemplo de comportamiento es el de 8 direcciones (8 direction). Este permite que un objeto


se mueva usando las flechas del teclado. Te ayuda a agilizar el desarrollo e incrementar la
productividad. Los comportamientos no están para hacer todo por ti: en el sistema de eventos es
donde la mayoría de la lógica del juego se define. Los comportamientos son, básicamente, atajos.
La mayoría de ellos pueden repetirse con eventos, pero así ahorras más tiempo. Los
comportamientos son muy personalizables, si uno de ellos no hace exactamente lo que quieres
que haga, puedes personalizarlo usando un evento.

Todos los ejemplos de un tipo de objeto tienen comportamientos. No puedes añadir un


comportamiento sólo a ciertos ejemplos - pero puedes habilitarlos o deshabilitarlo en cada uno
de ellos.

Algunos comportamientos añaden sus propiedades a la Barra de Propiedades. Ve a Referencia de


comportamientos (Behavior reference) para ver las de cada uno.

Algunos comportamientos también transmiten a los objetos a los que se les aplica sus propias
condiciones, acciones y expresiones. Así, éstas se muestran junto con las propias del objeto en el
diálogo de Añadir condición o acción y en el Panel de expresiones.

Los comportamientos se pueden agrupar en familias. Todos los tipos de objeto en la familia
tendrán el mismo comportamiento.
4.4.6 Efectos
Los efectos cambian la apariencia visual de los objetos. Se pueden añadir con el Diálogo de
efectos. También se pueden añadir a capas y planos, aunque los efectos que se combinan con el
fondo no se pueden usar en planos. Los efectos también son llamados shaders o WebGL shaders
effects, ya que se estos son la tecnología oculta que hace posibles los efectos. Debajo hay un
ejemplo de Efecto agua (Water effect) en una imagen.

C2 tiene una biblioteca con más de 70 efectos. Al añadirlos se muestran en la Vista de Plano si
WebGl está habilitado en las propiedades del proyecto. (Si WebGL está deshabilitado la Vista de
plano no mostrará ningún efecto). Se dan gran número de ejemplos de efectos en la Carpeta de
Ejemplos (Examples folder) de C2.

Se pueden aplicar varios efectos a un objeto, capa o plano. En este caso se encadenan los efectos.
Los resultados del primer efecto son procesados por el segundo, los del segundo por el tercero y
así sucesivamente.

Soporte (Support)
Para que se muestren los efectos es necesario que el dispositivo soporte WebGL. Para más
información mira la sección Tecnología (Technology) en la parte de Lienzo Canvas. En resumen,
no todas las plataformas u ordenadores soportan WebGL así que los efectos no se ven en estas
plataformas. Para asegurar que tu proyecto siga funcionando correctamente aunque el dispositivo
no soporte WebGL, mira la sección Recursos (Fallbacks).

Si se ven o no los efectos se puede comprobar con la Condición del sistema (system condition)
Se muestran efectos (Effects are supported).
Modo de mezcla (Blend mode)

La propiedad Modo de mezcla (Blend mode) funciona en todas las plataformas ya que también
funciona con el lienzo Canvas 2D. Es el único efecto que no requiere WebGL ni otros recursos
para funcionar.

El Modo de Mezcla ofrece unas sencillas formas predeterminada para mezclar objetos con el
fondo. Para ver un ejemplo de cómo funciona este Modo, mira el ejemplo Blend modes.capx en
la carpeta de ejemplos de C2.

Si se usan múltiples efectos, el Modo de mezcla se aplica sólo al último efecto. Por ejemplo con
tres efectos, los efectos se encadenaran con normalidad, y el Modo de mezcla se usará solo para
mezclar el resultado del tercer efecto con el fondo.

Recursos (Fallbacks)
Si el dispositivo no soporta WebGL, puedes especificar qué hacer usando la propiedad Recursos
(Fallbacks) en la categoría Efectos (Effects) en la Barra de Propiedades.

La propiedad Recursos no aparece si no se añaden efectos, y no hay necesidad de preocuparse de


si los efectos funcionan o no.

Por defecto, la propiedad Recursos cambia el Modo de mezcla a Normal si no se pueden soportar
los efectos. (Recuerda que la propiedad Modo de mezcla siempre funciona, en cualquier
plataforma u ordenador.) Esto hará que el objeto aparezca como si no tuviera ningún efecto
cuando no se soporta WebGL.

Las otras opciones de Recursos te permiten cambiar la propiedad Modo de mezcla a otra opción.
Por ejemplo, cuando usas el efecto pantalla (Screen effect) puedes conseguir un resultado similar
usando Aditivo (Additive) en el Modo de mezcla, así que puedes poner en Recursos - Aplicar
mezcla “Aditivo” (Set “Additive” blend). Si se soporta WebGL el objeto se mostrará con el
efecto pantalla (Screen effect). Si no, no funcionará este efecto pero sí el Aditivo (Additive) del
Modo de mezcla, pareciendo algo similar al efecto.

Finalmente, los recursos te permiten configurar un objeto para que se destruya (o que la capa se
esconda). Esto se puede usar en objetos opcionales con un uso meramente estético, por lo que si
no puede mostrar el efecto, simplemente no aparecerá dicho objeto.

Pruebas (Testing)

Asegúrate de probar tu proyecto con WebGL habilitado y deshabilitado en las propiedades del
proyecto para comprobar que los recursos funcionan correctamente y el contenido se muestra de
una forma razonablemente correcta. No puedes asumir que todos los usuarios tendrán soporte
para WebGL, incluso si usan un navegador que soporta WebGL, ya que un hardware antiguo o
unos drivers caducados harán que no se pueda usar WebGL. Hacer pruebas es la mejor forma de
proceder.

Cambiar efectos en tiempo de ejecución (Changing effects at runtime)


Los objetos que pueden tener efectos ofrecen acciones para habilitar y deshabilitar efectos, o
configurar los parámetro del efecto. Esto te permite activar efectos o ajustar sus parámetros en
tiempo de ejecución, dando más posibilidades y usos creativos. Para habilitar y deshabilitar
efectos de plano o capa, o cambiar sus parámetros, usa las acciones del sistema pertinentes.

Rendimiento (Performance)
Usar demasiados efectos puede ralentizar el rendimiento, especialmente en móviles. Intenta usar
los efectos solamente cuando sea necesario.

Crear muchos ejemplos de un objeto que contiene efectos puede resultar ineficiente, ya que los
efectos deben procesarse muchas veces en pequeños objetos. Si muchos ejemplos necesitan usar
efectos, sería más apropiado situar todos los ejemplos en la misma capa y aplicar el efecto a la
capa. Esto mejorará el rendimiento manteniendo el mismo efecto.

Nunca uses efectos para crear un efecto estático en un objeto. Por ejemplo, no uses “Escala de
grises” (“Grayscale”) para que un objeto aparezca en escala de grises. En su lugar, aplica la
escala de grises a la propia imagen en el editor e impórtala así al proyecto. Tiene el mismo efecto
visual y evitas que el efecto se degrade al procesarlo. Los efectos como “Escala de grises”
(“Grayscale”) se deben usar solamente para transiciones o para que los objetos aparezcan en
escala de grises sólo ocasionalmente.

Para más información, mira la sección del manual Consejos para el rendimiento (performance
tips).
4.4.7 Familias (Families)
In C2, las Familias son agrupaciones de grupos de objetos. Todos los tipos de objeto de una
familia deben provenir del mismo plugin (p.e Sprite objetcs) y no una mezcla como Sprites o
Fondo mosaico.

Las familias evitan que no repitas eventos. Por ejemplo, en vez de tener los mismos eventos para
los objetos Enemy1, Enemy2 y Enemy3, puedes añadir los eventos una sola vez a la familia
Enemigos (Enemies). Automáticamente se aplicaran a todos los tipos de objeto dentro de la
familia.

El ejemplo de Families.capx en la carpeta de ejemplos de C2 te muestran las ventajas de usarlas.


Hay siete tipos de enemigos, y todos se destruyen con el laser. Sin usar familias, se necesitan
siete eventos separados, como se muestra debajo:

Usando familias sólo es necesario usar uno:

Esto hace la tarea más fácil, agrupando objetos que funcionan de la misma forma.
Cómo crear una familia (How to create a family)
Haz clic con el botón derecho en la carpeta de Familias (Families) en la Barra del Proyecto y
selecciona Añadir familia (Add family). Aparece entonces el diálogo de Editar Familia (Edit
Family):

Los objetos de la izquierda son los objetos del proyecto que puedes añadir a la familia. Los de la
derecha son los que ya has añadido. Haz doble clic en un objeto para pasarlo al otro lado.
Puedes seleccionar varios objetos a la vez manteniendo pulsado Control y clicando varios de
ellos, después pulsas el botón del centro del diálogo para transferirlos.

Cuando hayas terminado, clica OK y la familia aparecerá en la Barra del Proyecto. Se puede
expandir para ver todos los objetos que contiene:

La familia, y los objetos que contiene, se pueden editar clicando el botón derecho sobre ella y
eligiendo opciones en el menú, como Quitar de la familia (Remove from family) o Editar familia
(Edit family).

Se pueden añadir objetos a múltiples familias. Todos los eventos de la familia se aplicarán al
objeto.

Variables de ejemplo de la familia (Family instance variables)


Las Variables de ejemplo también se pueden añadir a una familia, clicando el botón derecho en
el nombre de la familia en la Barra del Proyecto y seleccionando Variables de ejemplo de la
familia (Family instance variables).
Si añades una variable de ejemplo a una familia, todos los tipos de objetos dentro de ella
adquieren esa variable. Por ejemplo, añadiendo la variable de ejemplo Salud (Health) a la
familia Enemigos (Enemies) en el ejemplo de arriba, BladeEnemy, BugEnemy, CrescentEnemy,
FighterEnemy, SaucerEnemy, ScytheEnemy y SlicerEnemy adquirirán la variable Salud (Health).
Aparecerá también en el editor, junto a esta nueva variable, la propia de cada objeto. Pero en la
Vista de hoja de eventos la familia solo mostrará su propia variable de ejemplo (sólo los
añadidos directamente a la familia). Esto significa que cualquier variable de ejemplo que quieras
habilitar para los eventos de la familia debes añadirla a la propia familia y no a los objetos dentro
de ella.

Si un tipo de objeto pertenece a distintas familias, adquiere todas las variables de las familias.

Comportamientos de la familia (Family behaviors)


También se pueden añadir comportamientos a la familia clicando con el botón derecho el
nombre de la familia en la Barra del Proyecto y seleccionando Comportamientos de la familia
(Family behaviors).

Al igual que con las variables de ejemplo, si añades un comportamiento a una familia, todos los
tipos de objeto de la familia adquirirán el comportamiento. El comportamiento aparecerá en los
eventos para cada objeto y para el conjunto de la familia. Por ejemplo, si añades el
comportamiento Bala (Bullet) a la familia llamada Balas (Bullets) significa que la acción Ajustar
velocidad (Set speed) de bala estará disponible para todos los objetos de la familia o para la
propia familia en conjunto.

Si un objeto pertenece a varias familias, adquirirá los comportamientos de todas ellas.

Efectos de la Familia (Family effects)


Los efectos también se pueden añadir a una familia entera clicando el botón derecho del nombre
de la familia en la Barra del proyecto y seleccionando Efectos de la familia (Family effects).

Al igual que con las variables de ejemplo y los comportamientos, si añades un efecto a una
familia, todos los tipos de objeto de la familia adquirirán el efecto. Esto es útil para aplicar
objetos rápidamente a diferentes objetos.

Si un objeto pertenece a varias familias, adquirirá los efectos de todas ellas.

Seleccionar familias en los eventos (Picking families in events)


Las familias seleccionan ejemplos de la hoja de eventos independientemente del tipo de objeto
que haya en la familia. Por ejemplo, considerando que la Familia1 (Family1) contiene SpriteA y
SpriteB, las condiciones de la Familia1 no afectarán a todos los ejemplos de los tipos SpriteA y
SpriteB. Solo afectará a aquellos ejemplos que aparezcan cuando sucede una acción para la
Familia1. Así mismo, condiciones para ejemplos de SpriteA y SpriteB no afectarán a todos
aquellos contenidos en la Familia1. En otras palabras, en la hoja de eventos se trata a las familias
como tipos de objeto propios que contienen ejemplos de otros tipos de objeto. Esto es útil si
necesitas que un solo evento seleccione dos listas distintas de ejemplos del mismo tipo objeto.

Resumen (Summary)
Las familias son una función muy importante y esencial para ayudarte a simplificar los
proyectos. Las variables de ejemplo y los comportamientos que se añaden a las familias son
adquiridos por todos los objetos dentro de ella, lo que permite aplicar la lógica a varios objetos a
la vez.

4.5 Eventos
Los eventos son la principal función de C2: en vez de complicados lenguajes de programación y
scripts con una sintaxis enrevesada, en la que es fácil cometer errores, puedes definir cómo
quieres que funcione el juego usando un sistema lógico de bloques. Los bloques se refieren a los
eventos, aunque hay varios bloques que conforman una hoja de eventos.

El sistema de eventos de C2 puede no resultar familiar a los nuevos usuarios. Lee Como
funcionan los eventos (How Events Work) para ver un resumen. Los eventos no son bloques
prediseñados que limitan lo que quieres hacer. Están diseñados para darte las herramientas
básicas para crear juegos sofisticados.

Los conceptos básicos de los eventos son que las condiciones filtran los ejemplos que cumplen
la condición, entonces las acciones funcionan solamente para esos ejemplos. Un malentendido
común es que todos los ejemplos deben funcionar de la misma forma. Ése no es el caso: la
función de los eventos es filtrar ejemplos de forma individual, y aplicar acciones en aquellos que
cumplen cierta condición.

Los eventos se editan en la Vista de hoja de eventos usando el diálogo de Añadir


condición/acción (Add condition/action), el diálogo de Parámetros (Parameters) y el Panel de
expresiones (Expressions panel).

Debajo se muestra un sencillo diagrama. (No incluye todas las funciones de los eventos – el resto
están explicados en esta sección).

Las partes que forman los eventos se resumen debajo. Revisa todas las secciones relevantes del
manual para más información de cada una. Mira también, Cómo funcionan los eventos (How
events work).

Los eventos consisten en condiciones que se deben reunir, acciones que funcionan si es el caso
y, opcionalmente, más sub-eventos que prueban más condiciones, activas más acciones, etc. Por
ejemplo, si la condición Las balas impactan en el Alien (Bullet collides with alien) aparece, la
acción Destruir Alien (Destroy Alien) funcionará, y la acción de dest5ruir sólo afectará a
aquellos ejemplo que tengan dicha condición.
Las condiciones indican el criterio que se debe reunir. Filtran los ejemplos que sí los reúnen.

Las acciones hacen que sucedan cosas. Solamente afectan a los ejemplos filtrados por las
condiciones.

Las expresiones pueden ser sumas que resolver para obtener valores, o recuperarlos de objetos,
como lq coordenada X de un Sprite.

Los sub-eventos siguen a los eventos, apareciendo la sangría en la Hoja de eventos.

Los grupos organizan los eventos. Se pueden habilitar o deshabilitar en conjunto.

Los comentarios te permiten escribir notas y descripciones de los eventos. Se sitúan


normalmente encima del evento que estás describiendo. Esto es importante para mantener
ordenados tus proyectos.

Incluir (Includes) puede intercambiar hojas de eventos entre planos. Esto evita que tengas que
copiar y pegar los eventos de forma individual en cada plano. Añadir incluir es como hacer un
copia-pega automático del contenido de una hoja de eventos en otra.

Las variables de evento pueden almacenar números y textos de forma global (para todos los
planos) o local (para un rango específico de eventos).

Las hojas de evento son una lista de eventos. Se pueden asignar a un plano específico, o
incluirlas en otra hoja de eventos.

Scripting
C2 sólo usa el sistema de eventos y no funciona con ningún script. Esto es porque el sistema de
eventos es suficientemente potente para sustituir cualquier script. Aunque, si eres programador,
quizás te interese extender C2 usando Javascript SDK.

4.5.1 Como funcionan los eventos (How events work)


Si eres nuevo en los eventos de C2, esta sección te da un resumen de cómo funcionan. ¡Es
esencial que los principiantes lo lean! Harás juegos más eficientes si conoces bien cómo
funcionan los eventos.

Los eventos están diseñados para ser fáciles de manejar y muy intuitivos. Aunque tienen ciertas
formas específicas de funcionar, que se describen aquí.

Funcionan filtrando ciertos ejemplos que reúnen cierta condición. Las acciones entonces
funcionan sólo para esos ejemplos. Por ejemplo, tenemos el siguiente ejemplo:

Cuando una Bala (Bullet) colisiona con un Monstruo (Monster) la condición tiene lugar. Los
ejemplos de Balas y Monstruos envueltos en la colisión son seleccionados por el evento.
Entonces, la acción sólo funciona para los ejemplos seleccionados por la condición. Por ejemplo,
si hay otras 3 balas en la pantalla, sólo la que esté incluida en la colisión se destruye por la
acción Bala: Destruir (Bullet: Destroy). También, sólo el Monstruo que es golpeado resta una
unidad de salud (Subtract 1 from health) que es una variable de ejemplo. ¡Sería muy difícil hacer
buenos juegos si esto no funcionara así y las acciones afectaran a todos los ejemplos de
monstruos y balas! Así que recuerda que las condiciones filtran o recogen los ejemplos para que
las acciones funcionen en ellos.

Otra forma de pensar en los eventos es la de “Si todas las condiciones se reúnen en un ejemplo,
entonces las acciones funcionan”.

Varias condiciones (Multiple conditions)


Añadir más condiciones a un evento filtra los ejemplos para que las acciones funcionen. Por

ejemplo:

Este ejemplo funciona así:


1. Primero, se seleccionan todos los Monstruos que hay en la pantalla (is on-screen).
2. Entonces, en esa selección, se reduce a aquellos que tienen menos de 5 unidades de
salud(health <5).
3. Las acciones hacen que todos los monstruos que están en pantalla y que tienen menos de 5
unidades de salud miran directamente al jugador (set angle toward (Player.X, Player.Y)). No
afecta a los monstruos de fuera de la pantalla o los que tienen 5 o más de 5 unidades de salud.

Usando varias condiciones puedes hacer funcionar las acciones solo en los ejemplos que
cumplen todos los criterios. Los usuarios de lenguajes de programación u otras herramientas
reconocerán esto como “AND”. Todas las condiciones de un evento deben reunirse para que se
aplique la acción. Si no hay monstruos en pantalla o ninguno de los que hay tiene menos de 5
unidades de salud la acción no funciona.

Objetos sin referencia (Unreferenced objects)

Échale un vistazo al siguiente evento:

Si el usuario presiona la barra espaciadora y el booleano del Jugador PowerupEnabled está


activado, la acción sería Monstruo: Destruir (Monster: Destroy). Nota que no hay ninguna
condición para filtrar los ejemplos de Monstruo en este evento. En este caso, todos los ejemplos
de Monstruo se destruyen. En otras palabras, si en un evento no se hace referencia a las
condiciones de un efecto, las acciones se aplicarán en todos los ejemplos.

Para empezar, piensa en condiciones que cumplan todos los ejemplos y después,
progresivamente, ves seleccionándolas y filtrándolas. Si no hubiese condiciones, entonces se
seleccionarían todos los ejemplos, afectándoles las acciones a todos.
Borrar recoger eventos entre uno y otro (Picking resets between events)
Cuando un evento finaliza, el siguiente comienza desde cero. Sus condiciones empezarán a filtrar
todos los ejemplos de nuevo.

Por otra parte, los sub-eventos (que aparecen con sangría) continúan la tarea desde donde la dejó
el evento del que provienen. Un sub-evento filtrará aún más los ejemplos dejados por el evento
que venía antes de él. Si un evento tiene dos sub-eventos, ambos recogerán ejemplos del mismo
grupo del que recogía el padre (el primer sub-evento no afecta al segundo). En otras palabras, los
eventos en el mismo nivel de sangría siempre recogen del mismo grupo de ejemplos, y los
eventos de nivel más bajo siempre trabajan con los ejemplos filtrados desde más arriba.

El objeto Sistema (The System object)


El objeto Sistema en C2 representa la funcionalidad integrada. No tiene ejemplos. Esto significa
que la mayoría de condiciones de sistema no recogen ningún ejemplo: sólo son o verdaderos o
falsos. Si son falsos el evento deja de funcionar, de lo contrario el evento continúa sin recoger los
ejemplos que han sido cambiados. Aunque hay excepciones: si una condición del sistema usa un
objeto, como Recoger un ejemplo aleatoriamente (Pick random instance), afectará a los objetos
seleccionados.

Las acciones de sistema no funcionan en los objetos recogidos: solo si todas las condiciones del
evento se reúnen.

Los eventos funcionan de arriba a abajo (Events run top to bottom)


El orden de los eventos es importante. Cada evento se comprueba a menudo (sobre 60 veces por
segundo en la mayoría de ordenadores), y funcionan de arriba a abajo en la Hoja de eventos. La
pantalla se crea cada vez que funciona un nuevo evento, así que el proceso empieza de nuevo.
Esto significa que si un evento hace una cosa y el siguiente la deshace, no ocurrirá nada.

Lo mismo pasa dentro de los propios eventos: las condiciones se comprueban de arriba a abajo, y
las acciones funcionan de arriba a abajo.

Aunque hay una excepción, los detonantes (triggers). Mira la flecha verde a la izquierda de
Teclado: al presionar espacio (Keyboard: On Space pressed) en el ejemplo anterior:

Esto indica que el evento está detonado. En lugar de ejecutarse siguiendo los pasos, este evento
funciona (o se detona) cuando ocurre algo. En este caso, el evento funciona cuando el usuario
pulsa la barra espaciadora del teclado. No aparece en ningún otro momento. Los detonantes
hacen que un evento no siga la secuencia de ejecución de arriba a abajo. Esto significa que el
orden de los eventos con un detonante no es relevante (excepto en relación con otros detonantes
del mismo tipo, que siguen actuando de arriba a abajo).

Sólo puede haber un detonante por evento, porque dos no pueden funcionar simultáneamente.
Pero varios detonantes sí pueden agruparse en bloques “o” (ver la explicación siguiente).
Bloques “o”
Como se ha mencionado antes, se tienen que reunir todas las condiciones para que un evento
funcione. Esto se llama “Lógica Y” (“Logica AND”), porque la condición 1 Y la condición 2 Y
la condición 3... deben cumplirse. Pero puedes modificar un evento para que funcione cuando
cualquiera de las tres condiciones se cumpla. Esto se llama “Lógica O” (“Logical OR”), porque
el evento funcionará si la condición 1 O la condición 2 O la condición 3… se cumplen.

Normalmente los bloques funcionan como bloques Y (AND). Para crear bloques O (OR), clica
sobre el bloque con el botón derecho y selecciona Crear bloque O (Make Or block). Entonces
aparecerá un -or- entre cada condición, como se muestra abajo.

Date cuenta que normalmente sólo puedes poner un detonante por evento, pero puedes juntar
varios en un bloque de este tipo, por lo que el evento funcionara si cualquiera de los tres se da.

Puedes combinar los tipos de bloques usando sub-eventos. Esto te permite construir una lógica
más compleja, como un bloque “O” seguido de uno “Y”.

Condiciones enlazadas
Algunos eventos se enlazan, es decir, se repiten sus acciones varias veces. Date cuenta que las
flechas circulares en el ejemplo siguiente indican esto.

Esto significa que, cuando comienza el plano, la acción Crear objeto (Create object) se repite 10
veces. El resultado final es la creación de 10 monstruos en lugares al azar dentro del plano.

Puede haber más condiciones que sigan la condición Repetir (Repeat). Se comprueban en todas
las repeticiones y deben cumplirse para que la acción se desencadene. Puede haber más de un
enlace en un evento, pero no es frecuente.

Familias
Date cuenta que las familias recogen sus ejemplos independientemente a los tipos de objeto que
contienen. Para más información ve a la sección Seleccionar familias en los eventos (Picking
families in events).

Resumen
Usando este sistema de eventos es posible crear una lógica sofisticada que hace juegos de forma
rápida y fácil. Es una alternativa muy poderosa a los lenguajes de programación para personas
que no están acostumbradas al uso de estas técnicas.
Aunque esta sección ha descrito las partes esenciales del sistema de eventos, todavía no ha
cubierto todo. El resto de la sección de Eventos trata más características que puedes usar.
Behavior reference, Plugin reference y System reference también hablan de las condiciones,
acciones y expresiones en C2.

4.5.2 Hojas de evento


Las Hojas de Evento son simplemente listas de eventos. Se editan en la Vista de Hoja de
Evento. Todas las Hojas de Evento del proyecto aparecen en la Barra del Proyecto.

Los Planos tienen asociada una Hoja de Evento que define como funciona el plano. Hay dos
formas de compartir eventos entre capas:
1. Establecer la propiedad Hoja de Evento a varios planos en la misma hoja.
2. Crea una hoja de evento independiente con los eventos comunes e inclúyela en otras hojas.

La segunda opción es preferible ya que no estás forzado a usar los mismos eventos para
diferentes planos – sólo añades unos cuantos eventos extra para personalizarlos.

4.5.3 Condiciones
En los Eventos, las condiciones filtran los ejemplos que reúnen ciertos criterios. Aparecen a la
izquierda del evento. Todas las condiciones en un evento deben reunirse para al menos un
ejemplo para que la acción funcione. Las acciones solo se aplican a los ejemplos que tienen esas

condiciones.

El sistema de condiciones no selecciona ejemplos: simplemente son verdaderos o falsos, a


menos que se refieran específicamente a un objeto, como Recoger un ejemplo al azar (Pick
random instance).

Hay tres tipos de condiciones: las normales, las detonadas y las enlazadas. Mira la sección
Cómo funcionan los eventos (How events work) para más información.

Invertir condiciones
Las condiciones se pueden invertir, lo que cambia aquello que comprueba. Por ejemplo, la
condición Monstruo se superpone a Jugador (Moster is overlapping Player) es verdadera
siempre que el monstruo toca al jugador. Pero, si se invierte, aparece un icono rojo tachado que
significa Monstruo no se superpone a Jugador (Monster is not overlapping Player).

No se pueden invertir todas las condiciones (los detonadores no se pueden, ya que el evento no
tendría sentido en ese caso).
4.5.4 Acciones
En los eventos, las acciones hacen algo, como crear un objeto o ir a otro plano. Aparecen a la
derecha del evento.

Las acciones solo afectan a los ejemplos que reúnen las condiciones del evento. Mira la sección
Cómo funcionan los eventos (How events work) para más información.

4.5.5 Expresiones
En los eventos, las expresiones se usan para calcular sumas o recuperar información de un
objeto, como la coordenada X de un Sprite. Las expresiones se introducen el Diálogo de
parámetros. El Panel de Expresiones se muestra a la vez que da un catalogo de todas las
expresiones del sistema y de objeto disponibles en el proyecto.

Algunos ejemplos de expresiones, que pueden ir desde un número simple a un cálculo complejo,
son:

0
random(360)
Sprite.X
(Player1.X + Player2.X) / 2
Sprite.8Direction.Speed
Sprite.X + cos(Sprite.Angle) * Sprite.Speed * dt

Números
Los números simplememnte se introducen como dígitos con un decimal opcional separado por
un punto. Por ejemplo: 5 o 1.2.

Texto (Secuencias/Strings)
El texto, también conocido como secuencias (strings) en programación y a veces en C2. El texto
en las expresiones debe ser entrecomillado, por ejemplo “Hola” (“Hello”).

Las comillas no se incluyen como parte del texto, así que establecer que un objeto de texto
muestre la expresión “Hola” (“Hello”) hará que aparezca Hola (Hello), sin comillas. Para
incluir comillas en una secuencia deberás duplicarlas, por ejemplo “Él me dijo “”hola””” (“He
said” “””hi”” to me”) se convertirá en Él me dijo “hola” (He said “hi” to me).

Puedes usar & para crear cadenas de texto y números, por ejemplo “Tu puntuación es: ” &
puntuación” (“Your score is: ” & score)
Para añadir un salto de línea a la secuencia usa la expresión del sistema línea nueva (newline),
por ejemplo, “Hola” & línea nueva & “mundo” ("Hello" & newline & "world").

Operadores (Operators)
Puedes usar los siguientes operadores en las expresiones:
+ (suma)
- (resta)
* (multiplicación)
/ (división)
% (módulo, el resto tras la división)
^ (incrementar el poder)
& (crear secuencias)

También hay operadores de comparación =, <>, <, <=, >, >= para comparar valores. Vuelven a 1
si la comparación es verdadera o a 0 si es falsa.

& también se puede usar en la lógica Y (AND) y | para la O (OR). Es útil usarlos junto a los
comparadores, por ejemplo puntuación < 0 | salud < 0 (score < 0 | health < 0), que vuelve a 1
si es verdadero y 0 si es falso.

?: es un operador condicional, que te permite probar condiciones en las expresiones. Es útil


usado con los operadores de comparación y de lógica. Toma la forma de condición ¿
resultado_si_verdadero: resultado_si_falso (condition ? result_if_true : result_if_false)
Por ejemplo, salud < 0 | puntuación < 0 ¿ “¡Fin del juego!” : “¡Vuelve a intertarlo!” (health
< 0 | score < 0 ? "Game over!" : "Keep going!").
La condición cuenta como verdadera si no es cero, y falsa si lo es.

Expresiones de objeto (Object expressions)


Los objetos tienen sus propias expresiones para comprobar la información sobre el objeto. Éstos
aparecen como Sprite.X (El nombre del objeto, un punto, y el nombre de la expresión). El Panel
de expresiones muestra todas las expresiones disponibles en el proyecto, y están más detalladas
en la sección del manual Referencia (Reference).

La expresión Mismo (Self) se puede usar como acceso directo para referirse al proyecto actual.
Por ejemplo, en una acción para el Jugador, Self.X se refiere al Jugador.X (Player.X).

Puedes añadir un índice de objeto basado en 0 para conseguir expresiones para distintos
ejemplos de objeto. Por ejemplo, Sprite(0).X consigue la primera posición X del ejemplo, y
Sprite(1).X consigue la segunda. Para más información mira el índice IDs (IIDs) en las
características comunes. También puedes aprobar otra expresión para el índice. Los números
negativos empiezan en el extremo opuesto, así que Sprite(-1).X consigue la última posición de
X.

Expresiones de comportamiento (Behavior expressions)


Si un objeto tiene un comportamiento con sus propias expresiones, aparecen escritos como
Objeto.Comportamiento.Expression (Object.Behavior.Expression), por ejemplo
Sprite.Dirección8.Velocidad (Sprite.8Direction.Speed).
Expresiones del sistema (System expressions)
El sistema de expresiones fijas aparece en la referencia (reference). Estas incluyen algunas
funciones matemáticas básicas como sqrt (raíz cuadradra).

4.5.6 Sub-eventos
Los sub-eventos aparecen detrás de otros eventos. Estos continúan recogiendo ejemplos del
evento “padre”. Siguen funcionando tras el término de la acción que activa el evento “padre”.
Debajo un ejemplo.

Este evento funciona así:


1. Comprueba que todos los ejemplos de Monstruo están superpuestos al Jugador. Si es así, los
ejemplos involucrados se recordarán.
2. Las acciones del evento superior funcionarán después, pero en este caso no tiene.
3. El segundo evento (que está sangrado) comprueba entonces si la variable de ejemplo Escudo
del Jugador está activado (Player’s ShieldEnable). Si es así, sustrae 1 punto de salud del
Monstruo que se solapa con el Jugador.
4. El tercer evento (también sangrado) comprueba si el Escudo del Jugador no está activado
(Player’s ShieldEnable) (mira invertir condiciones). Si es así sustrae 1 punto de salud del
Jugador.

En otras palabras, los monstruos hieren al jugador al tocarlo, a menos que el jugador habilite su
escudo, en cuyo case el herido será el monstruo.

Esto funciona porque el objeto seleccionado por el evento superior se recuerda y se usa también
para los sub-eventos. Si el segundo y el tercero no fueran sub-eventos (no aparecerían sangrados)
el segundo evento sustraería 1 punto de salud de todos los Mostruos, ya que no habría referencia
alguna en el evento. (Mira Objetos sin referencia (Unreferenced objects) en la sección de cómo
funcionan los eventos para más información).

Los sub-eventos pueden tener sus propios sub-eventos también, que hacen que sean más
poderosos y flexibles para ajustar la lógica de avance del juego.

Nota que los sub-eventos funcionan después de las acciones solamente si las hay – en el ejemplo
de arriba, si ningún monstruo se solapa con el jugador, ni la acción ni el evento o sub-evento
funcionan.

Detonadores en los sub-eventos


Si hay un detonador en un sub-evento todas las condiciones del evento principal deben
cumplirse al tiempo que el detonador se activa, de otra forma no funcionará.

Puede haber solamente un detonador en un conjunto de sub-eventos. En otras palabras, los


eventos que estén sobre el detonador no pueden contener otro.
4.5.7 Grupos
Los grupos de eventos sirven principalmente para organizar eventos. Se pueden abrir y cerrar
usando los botones + o -. Se editan con el Diálogo de grupo de evento.

Los eventos se pueden arrastrar y soltar dentro y fuera del grupo. Grupos enteros también
pueden ser habilitados y deshabilitados con la acción del sistema Activar Grupo (Set Group
Active), lo que es útil en pausas del juego.

4.5.8 Comentarios
Los comentarios del evento son notas que te ayudan a recordar cómo funcionan los eventos y
qué hacen. ¡Son muy importantes para ayudarte a recordar cómo funcionan las cosas en grandes
proyectos! Los comentarios tienen el fondo amarillo y aparecen sobre el evento que están
describiendo.

Se pueden editar haciendo doble clic sobre ellos. Puedes hacer un comentario con un salto de
línea manteniendo pulsado shift y pulsando Enter.

Si usas C2 muy a menudo, encontrarás esenciales los comentarios para ayudar a organizarte y
entender el funcionamiento de trabajos grandes. Volver a un proyecto tras unos pocos meses sin
ningún comentario sería difícil, así que no los subestimes.

Los comentarios no afectan en absoluto al funcionamiento de tu proyecto. Sólo son informativos.


Nada que escribas allí se exportará al juego.

4.5.9 Adjunto
La Hoja de eventos adjunta te permite incluir una hoja de evento en otra. Es como un copia-
pega automático del contenido de una hoja a otra. Esto es útil para compartir eventos comunes en
varios planos. Por ejemplo, puedes usar diferentes hojas de eventos para distintas partes de la
lógica del juego. Puedes tener hojas de eventos llamadas Entrada del Jugador (Player input),
Control del enemigo (Enemy control), Efectos (Effects) y demás. Entonces cada nivel del juego
puede incluir estos eventos habituales en la propia hoja de evento de ese plano. Esto te permite
compartir eventos entre múltiples planos sin tener que copiar y pegar todos los eventos una y
otra vez.
Los adjuntos pueden añadirse haciendo doble clic en un espacio de la Hoja de eventos, o usando
la Barra de Eventos.

4.5.10 Variables
Las Variables de Evento son los valores numéricos o textuales para el proyecto global o local,
para un conjunto de eventos. Se modifican con el Diálogo de Variables de evento.

Las Variables de evento se modifican con el sistema de acciones en la categoría de Variables


Globales y Locales (Global & local variables). Se pueden recuperar usando su nombre en
expresiones (expressions).

Variables globales
Las variables globales aparecen con el icono un globo terráqueo (como en la imagen de arriba).
Están en el nivel más alto de la hoja de eventos- no son sub-eventos ni están dentro de un
grupo.

Almacenan sus valores entre planos. Los eventos en cualquier plano pueden acceder a las
variables globales.

Variables locales

Las variables locales se sitúan tras otros eventos o dentro de un grupo. Aparecen con el icono
de un diamante en vez de un globo.

Hay dos diferencias importantes entre variables locales y globales:


1. Las locales vuelven a su valor inicial en cada paso. Esto es por diseño e intentando imitar
lo que hacen las variables locales en los lenguajes de programación.

2. Las locales solo son accesibles en su radio de alcance.

El radio de alcance de una variable de evento está diseñado también para coincidir con los
lenguajes de programación reales. El radio de alcance ce una variable local es su nivel de sub-
eventos. El resto de eventos a su nivel, o a más bajos, pueden acceder a la variable local. Los
eventos por encima (menos sangrados) no pueden acceder a ellas. Esto hace que las variables
locales sean apropiadas para un grupo reducido de eventos o eventos de corta duración.

Por ejemplo, si una variable de evento está en un grupo de eventos se convierte en una variable
local. Entonces, solo aparecerá como opción para los eventos de ese grupo. En otros grupos o
en otras hojas de eventos no aparecerá por lo que no podrá ser accedida. Esto hace que el radio
de alcance sea el lugar en el que está contenida la variable.
4.6 Archivos
Cualquier archive externo puede ser importado a tu proyecto usando la Barra del Proyecto. Es
útil para incluir cualquier otro recurso que tu proyecto pueda necesitar, como videos, imágenes
extras, datos JSON, datos XML, datos de texto, documentos, o otros archivos generales que
quieras permitir descargar a los usuarios.

Para ver ideas sobre usos de archivos en tu proyecto, mira el tutorial Using project files in
Construct 2 ⇗.

Se pueden importar archivos clicando el botón derecho en la carpeta de archivos (files) en la


Barra del Proyecto y seleccionando Importar archivos (Import files).

Por defecto puedes añadir cualquier tipo de archivo a tu proyecto, pero también puedes filtrar los
archivos para mostrar sólo aquellos del tipo que buscas.

Importar archivos del proyecto tiene los siguientes efectos:


1. El archivo se copia en tu carpeta del proyecto o se almacena dentro del archivo .capx (No hay
referencia del lugar de almacenamiento del archivo, así que si cambias el archivo original, no se
actualizará en el proyecto).
2. Cuando haces la vista previa, también se puede acceder al archivo desde el servidor de vista
previa (localhost), que te ayuda a probar los archivos dentro del proyecto.
3. El archivo se exporta junto al proyecto.
4. Cuando lo publiques, el archivo estará disponible para su uso offline junto con el resto del
proyecto. Para más información mira el tutorial Offline games in Construct 2 ⇗.

Los archivos del proyecto pueden ser solicitados por AJAX en tiempo de ejecución mediante la
acción Request project file de objetos AJAX. Esto es útil para datos XML o JSON en tiempo de
ejecución.

4.7 Sonido y Música


Los Sonidos y la Música en C2 son archivos de audio. Cualquier archivo de sonido que use el
proyecto será exportado junto con él. Ya que los creadores de navegadores no se ponen de
acuerdo en un formato de audio para la web, se debe encodear en dos formatos: Ogg Vorbis
(.ogg) y MPEG-4 AAC (.m4a).

Para importar y reproducir audio en C2, debes seguir los siguientes pasos:

1. Importa sonidos clicando el botón derecho en las carpetas de Sonido (Sound) y Música
(Music) en la Barra del Proyecto y seleccionando Import sounds o Import music.
2. Importa el audio mediante el diálogo de Importar audio.
3. Añade el objeto de audio al proyecto y añade eventos para reproducir el audio.

Para más información a la hora de importar audio, ve a la sección Diálogo de Importar audio
Import Audio dialog.

Tipos MIME (MIME types)


Para que tu servidor envíe los archivos de audio correctamente, deben estar configurados los
siguientes tipos MIME:
.ogg como audio/ogg
.m4a como audio/mp4

Sin estos tipos MIME quizás no puedas escuchar el audio tras subir el proyecto al servidor, o al
entrar a la URL del archivo de audio te aparecerá 404 Not Found error.
5. Referencia de
Comportamientos
Está sección nos da una referencia de todos los comportamientos oficiales que vienen con C2.
Cada uno tiene un resumen de su uso, una lista de propiedades y una detallada lista de acciones,
condiciones y expresiones específicas del comportamiento. Los comportamientos transmiten sus
condiciones, acciones y expresiones al objeto al que son añadidos, apareciendo junto a las
propias características del objeto en el Diálogo de Añadir Condición/Acción y en el Panel de
expresiones.

Los comportamientos se pueden añadir y quitar a un objeto vía Barra de Propiedades, que abre el
Diálogo de Comportamientos de objeto y el de Añadir comportamiento.

Personalizar controles
Por defecto, los movimientos del comportamiento controlados por el usuario usan unos
controladores estándares ya fijados (normalmente basados en las flechas del teclado). Para
cambiarlos, cambia la propiedad Controles por defecto (Default controls) a No, y configura
algunos eventos usando la acción Control simulado (Simulate control). Para un ejemplo, ve al
ejemplo Paltform 4 (custom controls).capx en la carpeta de ejemplos en el directorio de
instalación de C2. Utiliza los siguientes eventos para cambiar las flechas del teclado a W, A y D:

La acción Control simulado (Simulate control) no tiene que manejarse con el teclado. Por
ejemplo, se puede usar con un toque para crear controles de toque de pantalla o con un mando.
También puedes configurar eventos para que controlen ejemplos automáticamente con la acción
Control simulado (Simulate control). Esto te permite configurar enemigos controlados por el
ordenador o personajes sin jugador (NPCs), a veces referidos como “AI”.
5.1 8 direcciones
El comportamiento de 8 direcciones permite que un objeto se mueva arriba, abajo, izquierda,
derecha o en las diagonales, controlado por las flechas del teclado por defecto. Suele ser útil para
controlar al jugador en juegos con vista cenital. También se puede simplificar a 4 direcciones
(arriba/abajo, izquierda/derecha) útil para deslizarse o para nadar.

El comportamiento de 8 direcciones está bloqueado para cualquier objeto que contenga el


comportamiento Sólido (Solid).

Para configurar los controles, mira el resumen de referencias de comportamiento (behavior


reference summary).

Propiedades de las 8 direcciones

Velocidad Máxima (Max speed)

La velocidad máxima a la que un objeto puede viajar en cualquier dirección, en píxeles por
segundo.

Aceleración (Acceleration)
La tasa a la que acelera el movimiento, en píxeles por segundo por segundo. Al invertir el
movimiento actual, la aceleración y la deceleración contribuyen a disminuir la velocidad.

Deceleración (Deceleration)
La tasa a la que decelera el movimiento para descansar cuando no hay movimiento, en píxeles
por segundo por segundo. Al invertir el movimiento actual, la aceleración y la deceleración
contribuyen a disminuir la velocidad.

Direcciones (Directions)
Ajusta cuantas direcciones tiene el movimiento. Por defecto son 8, incluyendo las diagonales.
Las 4 direcciones no usan las diagonales y, Arriba&Abajo e Izquierda&Derecha solo permiten
el movimiento a lo largo de esos ejes.

Ajustar ángulo (Set angle)


Si hay o no movimiento afectará al ángulo del objeto. 360 grados siempre establece el ángulo del
objeto en el ángulo actual del movimiento. Los intervalos de 45 grados ajustarán el objeto en las
8 direcciones posibles. Los intervalos de 90 grados lo ajustarán en las 4 direcciones posibles. No
significa que el comportamiento no ajustará el ángulo del objeto, lo que es útil si quieres
controlarlo tú mismo con eventos (para hacer que el objeto se encare al según el cursor del
ratón).

Controles por defecto (Default controls)


Si Sí, el movimiento se controla con las flechas del teclado. Cámbialo a No para customizarlos
usando la acción Control simulado (Simulate control). Para más información ve a Personalizar
controles en el resumen de referencias de comportamiento (behavior reference summary).
Condiciones de las 8 direcciones

Cotejar velocidad (Compare speed)


Coteja la velocidad del objeto en pixeles por segundo.

Se está moviendo (Is moving)


Verdadero si el objeto tiene una velocidad distinta de cero (no está parado). Inviértelo para
comprobar si el objeto está parado.

Acciones de las 8 direcciones


Opuesto (Reverse)
Invierte la dirección del movimiento. Una forma sencilla de rebotar el objeto para evitar un
obstáculo.

Ajustar aceleración (Set acceleration)


Ajustar deceleración (Set deceleration)
Ajustar velocidad máxima (Set max speed)
Estos ajustan las propiedades correspondientes, descritas en las propiedades de las 8 direcciones.

Habilitar (Set enable)


Habilita o deshabilita el movimiento. Si está deshabilitado, el movimiento no tendrá efecto en el
objeto.

Selecciona ignorar entrada (Set ignoring input)


Establece si se ignora la entrada, Si se ignora, el presionar las teclas de control no tendrá efecto.
Pero, al contrario que deshabilitar el comportamiento, el objeto podrá continuar moviéndose.

Ajustar velocidad (Set speed)


Ajusta la velocidad del objeto, en píxeles por segundo.

Simular control (Simulate control)


Simula uno de los controles de movimiento mientras se mantiene pulsado. Es útil cuando ajustas
los Controles por defecto a No. Mira los Controles personalizados en el resumen de referencias
de comportamiento (behavior reference summary) para más información.

Parada (Stop)
Un acceso directo para poner la velocidad a cero.
Expresiones de las 8 direcciones

Aceleración (Acceleration)
Deceleración (Deceleration)
Velocidad máxima (MaxSpeed)
Restablece las propiedades correspondientes, descritas en las propiedades de las 8 direcciones.

Mover ángulo (MovingAngle)


Da el ángulo del movimiento (que puede ser diferente al ángulo del objeto) en grados.

Velocidad (Speed)
Da la velocidad del movimiento del objeto, en píxeles por segundo.

VectorX
VectorY
Da la velocidad del objeto en cada eje, en píxeles por segundo. Por ejemplo, si el objeto se
mueve a la izquierda a 100 píxeles por segundo, el VectorX es -100 y el VectorY es 0.

5.2 Ancla (Anchor)


El comportamiento Ancla es útil para posicionar objetos automáticamente en relación al tamaño
de la ventana. Importante para soportar varios tamaños de pantalla. Para más información de las
características que soportan múltiples tamaños de pantalla, mira el tutorial Supporting multiple
screen sizes ⇗.

Este comportamiento sólo tiene un efecto útil cuando la propiedad pantalla completa en el
navegador está activada tanto en On (crop mode) como en On (scale mode).

Los objetos que usan el Ancla deben estar en una capa cuyo paralaje sea 0,0. De otra forma,
mientras el juego avanza el objeto podría quedarse atrás en la pantalla.
Posicionar objetos en relación al tamaño de la ventana
En la parte superior izquierda de la Vista del plano, un cuadro intermitente representa el tamaño
por defecto de la pantalla del juego. Los objetos anclados deben posicionarse dentro del área del
cuadro de puntos, como se muestra a continuación.
Ahora, si la ventana cambia su tamaño durante la vista previa, los objetos mantendrán sus
posiciones relativas, como se muestra abajo:

Esto es útil para elementos de la interfaz como notificaciones y pantallas de visualización frontal
(HUDs).

Posiciones relativas
El Borde izquierdo (Left edge) y el Borde derecho (Right edge) posicionan el objeto en
relación a las esquinas de la ventana, sin cambiar el tamaño del objeto. Por ejemplo, si el borde
izquierdo (left edge) se ajusta a la ventana derecha, (window right) el objeto siempre estará a la
misma distancia del borde derecho de la ventana.
El Borde derecho (Right edge) y el Borde del fondo (Bottom edge) ajustan el tamaño del
objeto en relación a las esquinas de la ventana. Por ejemplo, si quieres que un Fondo adosado
(mosaico) se extienda más allá del ancho de la ventana, ajusta el borde derecho (right edge) a la
ventana derecha (window right).
Condiciones, acciones y expresiones del Ancla
El Ancla solo tiene una acción:

Habilitar (Set enabled)


Ajusta si el comportamiento está habilitado o deshabilitado. Si está deshabilitado, el
comportamiento no alterará el tamaño o posición del objeto.

5.3 Atado al plano (Bound to layout)


El comportamiento Atado al plano solo evita que el objeto desaparezca por los bordes del
plano. Es más útil en objetos que se mueven pero no deben salir del área del plano.
No tiene condiciones, ni acciones ni expresiones, solo la siguiente propiedad:

Atado por (Bound by)


Ajusta al Borde (Edge) para evitar que cualquier parte del objeto se salga del plano. El objeto se
parará en esa posición como se muestra a continuación:

Ajusta al Origen (Origin) sólo para evitar que el objeto salgo completamente del plano. El
resultado depende de donde hayas marcado el origen del objeto, pero con un origen centrado se
parará en una posición similar a la siguiente imagen:

5.4 Bala (Bullet)


El comportamiento Bala simplemente mueve el objeto hacia delante en un ángulo. Pero también
tiene opciones extra como gravedad o rebotar lo que te permite usar el objeto como una pelota
que rebota. Como el nombre sugiere, es ideal para proyectiles y balas, pero también es útil para
controlar automáticamente otro tipo de objetos como enemigos que caminan hacia delante
constantemente.

Para dos ejemplos del comportamiento Bala ve a Bouncing balls.capx y Bouncing bullets.cap en
la carpeta de ejemplos en el directorio de instalación de C2.

Propiedades de Bala
Velocidad (Speed)
La velocidad inicial de la bala, en píxeles por segundo.

Aceleración (Acceleration)
La tasa de aceleración de la bala en píxeles por segundo por segundo. Cero mantendrá una
velocidad constante, los valores positivos la acelerarán y los negativos la decelerarán hasta
pararse (el objeto no puede volver).
Gravedad (Gravity)
La fuerza de la gravedad que hace que la bala descienda, en píxeles por segundo por segundo.
Cero deshabilita la función de la gravedad que es útil en juegos con vista cenital. Los valores
positivos hacen que la bala dibuje una parábola mientras avanza, por efecto de la gravedad.
Rebotar contra sólidos (Bounce off solids)
Si lo ajustas a Sí, la bala rebotará en cualquier objeto con el comportamiento Sólido (Solid).
También calculará en ángulo de reverberación para que sea realista dependiendo de la forma y el
ángulo del objeto.
Ajustar ángulo (Set angle)
Si está en No, el comportamiento nunca cambiará el ángulo del objeto. Si está en Sí, el
comportamiento siempre ajustará el ángulo del objeto al del movimiento.

Condiciones de la Bala
Cotejar velocidad (Compare speed)
Coteja la velocidad actual de la bala, en píxeles por segundo.

Cotejar la distancia viajada (Compare distance travelled)


Coteja la distancia total que la bala ha recorrido, en píxeles. Esto no tiene en cuenta la alteración
de la posición del objeto llevada a cabo por otras acciones como Ajustar posición (Set position).

Acciones de la Bala
Rebotar en objeto (Bounce off object)
Hace que la bala rebote en un objeto si lo toco. Ya que la bala solamente toca el objeto, es útil
usar el evento Colisión (On collision). También calculará el ángulo de reverberación para rebotar
de forma realista dependiendo de la forma y ángulo del objeto. Si la bala no se solapa al objeto, o
se queda atascada dentro, está acción no tendrá efecto.
Ajustar aceleración (Set acceleration)
Ajusta la aceleración de la bala en píxeles por segundo por segundo.
Ajustar ángulo de movimiento (Set angle of motion)
Ajusta el ángulo al que se mueve la bala, en grados.
Habilitar (Set enabled)
Habilita o deshabilita el movimiento. Si está deshabilitado, el comportamiento dejará de mover
la bala, pero recordará la velocidad, aceleración, etc. si la vuelves a habilitar.

Ajustar gravedad (Set gravity)


Ajusta la aceleración causada por la gravedad, en píxeles por segundo por segundo.

Ajustar velocidad (Set speed)


Ajusta la velocidad de movimiento de la bala, en píxeles por segundo.

Expresiones de la Bala
Aceleración (Acceleration)
Da la aceleración actual en píxeles por segundo por segundo.

Ángulo de Movimiento (AngleOfMotion)


Da el ángulo al que la bala se está moviendo (que puede ser distinto al del objeto), en grados.

Distancia viajada (DistanceTravelled)


Da la distancia total que la bala ha recorrido desde su creación en píxeles. No tiene en cuenta
movimientos del objeto realizados por otras acciones como Ajustar posición (Set position).

Velocidad (Speed)
Da la velocidad de movimiento de la bala en píxeles por segundo.

5.5 Coche (Car)


El comportamiento Coche permite que un objeto acelere hacia delante y hacia atrás pudiéndose
manejar. También tiene una función de “deriva” con la que el objeto puede “derrapar” en las
esquinas (señalando a una dirección diferente a la que se está moviendo). Para un ejemplo del
comportamiento Coche ve a Car behavior.capx en la carpeta de ejemplos de C2.
Por defecto el objeto se controla con las flechasd el teclado (Arriba para acelerar, Abajo para
frenar, Izquierda y Derecha para moverse). Para customizar los controles ve al resumen de
referencias de comportamientos behavior reference summary.
El comportamiento coche rebotará en cualquier objeto con el comportamiento Sólido. El efecto
en el movimiento depende del ángulo de impacto – colisiones de refilón moverán al coche de su
ruta, mientras que colisiones de frente lo pararán. La cantidad de velocidad perdida dependerá de
la propiedad Fricción (Friction).

Propiedades de coche
Velocidad máxima (max speed)
La velocidad máxima, en píxeles por segundo, a la que el coche puede acelerar.

Aceleración (Acceleration)
La tasa a la que el coche acelera, en píxeles por segundo por segundo.

Deceleración (Deceleration)
La tasa a la que el coche frena, en píxeles por segundo por segundo.

Velocidad de manejo (Steer Speed)


La tasa a la que el coche rota cuando conduces, en grados por segundo.

Recuperación de la deriva (Drift recover)


La tasa a la que el coche se recupera cuando se va a la deriva, en grados por segundo. En otras
palabras, la tasa del ángulo de movimiento se actualiza con el ángulo del objeto. El ángulo de
movimiento no puede ser nunca más de 90 grados respecto al ángulo del objeto. Si la
recuperación de la deriva (Drift recover) es superior o igual a la Velocidad de manejo (Steer
Speed) el coche no se irá a la deriva. Cuanto más despacio se recupere de la deriva, más
derrapará en las esquinas.

Fricción (Friction)
La cantidad de velocidad perdida cuando se colisiona con un sólido, de 0 (parada) a 1 (no afecta
a la velocidad). Por ejemplo, para bajar la velocidad a la mitad cuando se colisiona, ajusta la
Fricción a 0,5.

Ajustar ángulo (Set angle)


Si Sí, el comportamiento ajustará el ángulo del objeto. Si No, el comportamiento nunca cambiará
el ángulo.

Controles por defecto


Si Sí, el movimiento del coche se controla con las flechas del teclado. Si No, con controles
personalizados. Para más información ve al resumen de la referencia de comportamientos
behavior reference summary.

Condiciones de coche
Cotejar velocidad (Compare speed)
Coteja la velocidad actual del coche, en píxeles por segundo.

Se está moviendo (Is moving)


Verdadero si la velocidad del momento es distinta de cero. Inviértelo para comprobar que el
coche está parado.

Acciones de coche
Ajustar aceleración (Set acceleration)
Ajustar deceleración (Set deceleration)
Ajustar recuperación de la deriva (Set drift recover)
Ajustar fricción (Set friction)
Ajustar velocidad máxima (Set max speed)
Ajustar velocidad de manejo (Set steer speed)
Ajustan las propiedades correspondientes. Mira las propiedades de coche para más información.

Habilitar (Set enabled)


Habilita o deshabilita el movimiento. Si está deshabilitado, el movimiento no tendrá efecto sobre
el objeto.
Selecciona ignorar entrada (Set ignoring input)
Ajusta si se ignorará la entrada. Si se ignora, presionar las flechas del teclado no tendrá efecto.
Pero, si deshabilitas el comportamiento, el objeto continuará moviéndose.

Ajustar velocidad (Set speed)


Ajusta la velocidad actual a la que el objeto se mueve, en píxeles por segundo.

Simular control (Simulate control)


Simula uno de los controles de movimiento mientras se mantiene pulsado. Es útil cuando ajustas
los Controles por defecto a No. Mira los Controles personalizados en el resumen de referencias
de comportamiento (behavior reference summary) para más información.

Parada (Stop)
Un acceso directo para poner la velocidad a cero.

Expresiones de coche
Aceleración (Acceleration)
Deceleración (Deceleration)
Recuperación de la deriva (DriftRecover)
Fricción (Friction)
Velocidad máxima (MaxSpeed)
Velocidad de manejo (SteerSpeed)
Dan las propiedades correspondientes. Mira las propiedades de coche para más información.

Ángulo de movimiento (MovingAngle)

Da el ángulo de movimiento actual (que puede ser distinto del ángulo del objeto), en grados.

Velocidad (Speed)

Da la velocidad actual del objeto, en píxeles por segundo.

VectorX
VectorY

Da la velocidad del objeto en cada eje, en píxeles por segundo. Por ejemplo, si el objeto se
mueve a la izquierda 100 píxeles por segundo, VectorX será -100 y VectorY 0.
5.6 Personalizar movimiento (Custom movement)
El comportamiento Personalizar movimiento no implica ningún movimiento para el objeto.
Pero tiene funciones que hacen más fácil incluir tus propios movimientos “personalizados”
(basados en eventos).

Los diferentes movimientos no se pueden explicar en esta sección del manual. Pero sí que se
hará un resumen de los comportamientos básicos de movimiento y lo que hacen. Para un ejemplo
de movimiento estilo asteroides usando movimientos personalizados, ve al ejemplo Custom
movement (asteroids).capx en la carpeta de ejemplos de C2.

Para muchos juegos, los comportamientos predefinidos como Platafora (Platform) y las 8
Direcciones (8 Direcction) son suficientes. Modificar comportamientos existentes con la
herramienta de personalizar se debe evitar, ya que son más difíciles de hacer funcionar
correctamente. Los predefinidos han sido probados concienzudamente y tienen más funciones de
las que puedas imaginar (como la detección de inclinación en Plataforma), y son más rápidos y
fáciles de usar que los personalizados.

Resumen de los movimientos personalizados


La mayoría de los movimientos en C2 funcionan manipulando dos valores: la velocidad en el eje
X (dx) y la velocidad en el eje Y (dy). También se llaman VectorX y VectorY en algunos
comportamientos. Por ejemplo, si un objeto se mueve a la izquierda 100 píxeles por segundo, dx
será -100 y dy 0. El objeto se puede acelerar a la derecha añadiendo a dx. Esta es el
funcionamiento de la mayoría de los comportamientos de C2 (como Plataforma y 8 Direcciones).
El comportamiento de movimiento personalizado almacena los valores de dx y dy, y proporciona
funciones para añadir los algoritmos y la matemática necesarios para el movimiento.

A cada vez, el movimiento personalizado ajusta la posición del objeto dependiendo de los
valores dx y dy. Esto se llama paso. También puede usar múltiples pasos por vez, lo que ayuda a
detectar colisiones de forma más precisa si el objeto se mueve muy rápidamente. Cada paso
detonará En el paso (On step), En el paso horizontal (On horizontal step) o En el paso vertical
(On vertical step) dependiendo en la propiedad Modo de paso (Stepping mode).

Propiedades de movimiento personalizado


Modo de paso (Stepping mode)
Como avanzar un paso en el movimiento por cada vez. El número de pasos dado depende de la
propiedad Píxeles por paso (Pixels per step).
None mueve el objeto un paso por vez de acuerdo a su velocidad.
Linear moverá el objeto en una línea recta hacia su posición de destino, detonando On step (En
el paso).
Horizontal then vertical moverá el objeto a su destino primero en el eje X (detonando On
horizontal step) y después en el eje Y (detonando On vertical step).
Vertical then horizontal lo hará al contrario que el anterior.

Píxeles por paso (pixels per step)


Si el modo de paso está en None, esta es la distancia en píxeles a la que avanzará por vez y por
paso. Por defecto es 5, lo que significa que se moverá 20 píxeles por vez, se moverá en pasos de
cuatro o cinco píxeles.

Condiciones de movimiento personalizado


Cotejar velocidad (Compare speed)
Coteja la velocidad actual del movimiento, en píxeles por segundo. Horizontal y Vertical cotejan
la velocidad de dx y dy respectivamente y Total (Overall) coteja la magnitud del vector (dx, dy)
(la cantidad total).

Se está moviendo (Is moving)


Verdadero si dx o dy son distintas de cero. Invierte para comprobar si está parado.

On horizontal step
On vertical step
Detonados para cada paso a lo alrgo de un eje cuando el modo de paso está en Horizontal then
vertical o en Vertical then horizontal. Se usa para detectar colisiones de forma precisa si hay
solapamiento (Is overlappeing).

On step
Detonado para cada paso cuando el modo de paso está en Linear. Se usa para detectar colisiones
de forma precisa si hay solapamiento (Is overlappeing).
Acciones de movimiento personalizado
Habilitar (Set enabled)
Habilita o deshabilita el comportamiento. Si está deshabilitado no modificará la posición del
objeto.

Rotar en el sentido de las agujas del reloj (Rotate clockwise)


Rotar en el sentido contrario a las agujas del reloj (Rotate counter-clockwise)
Ajustar (Set)
Ajusta el ángulo de movimiento. Calculará nuevos valores para dx y dy reflejando un nuevo
ángulo de movimiento con la misma velocidad total.

Acelerar (Accelerate)
Acelera el movimiento total o el movimiento en un eje específico.

Acelerar hacia ángulo (Accelerate toward angle)


Acelerar hacia posición (Accelerate toward position)
Acelera el movimiento hacia el ángulo o la posición.

Apartar sólido (Push out solid)


Sólo válido cuando el comportamiento se solapa con un objeto con el comportamiento sólido.
Mueve automáticamente el objeto hasta que no se solape con el sólido. No tiene efecto si el
objeto no se solapa. Se pueden usar las siguientes técnicas:
Ángulos opuestos (Opposite angles) invierte (o recalcula) el objeto desde el ángulo de
movimiento actual hasta que no se solape.
Más cercano (Nearest) mueve el objeto en una espiral dentro de las 8 direcciones un píxel por
vez hasta que no se solape. El objetivo es que el objeto acabe en el espacio libre más cercano,
pero como se usan sólo 8 direcciones el resultado será una aproximación.
Arriba, Abajo, izquierda y derecha (Up, down, left and right) mueven el objeto a través de un eje
específico hasta que no se solape.

Apartar sólido en el ángulo (Push out solid at angle)


Sólo válido cuando el comportamiento se solapa con un objeto con el comportamiento sólido.
Mueve el objeto con un ángulo dado hasta que no se solape con el sólido. No tiene efecto si el
objeto no se solapa.

Invertir (Reverse)
Invierte el movimiento volteando los valores de dx y dy.

Ajustar velocidad (Set speed)


Ajusta la velocidad del movimiento en píxeles por segundos del eje horizontal, del vertical, o del
total. Ajustando la velocidad horizontal o vertical das valores a dx y dy directamente. Si la
ajustas al total se calculan nuevos valores para dx y dy para que se reflejen la nueva velocidad
total manteniendo el mismo ángulo de movimiento.

Parada (Stop)
Un acceso directo para poner la velocidad a cero.
Paras pasos (Stop stepping)
Sólo válido para On step, On horizontal step y On vertical step. Para el modo de pasos en esa
vez. El objeto puede volver a su Antigua posición (dónde estaba la vez anterior) o mantenerse en
su posición actual (probablemente a medio camino entre las dos posiciones).

Expresiones de movimiento personalizado


dx
dy
Da los valores de movimiento dx y dy, que es la velocidad en píxeles por segundo de cada eje.

Movimiento de ángulo (MovingAngle)


Da el ángulo de movimiento, en grados, calculado como el ángulo de vector (dx, dy).

Velocidad (Speed)
Da la velocidad total en píxeles por segundo, calculados como la magnitud del vector (dx, dy).

5.7 Destruir fuera del plano (Destroy outside


layout)
El comportamiento Destruir fuera del plano destruye automáticamente cualquier objeto que
salga del área del plano. Sólo lo destruye si sale completamente (ninguna parte de su cuadro
delimitador está dentro del plano). Este comportamiento no tiene propiedades, condiciones,
acciones ni expresiones.

Este comportamiento es útil para evitar que balas y otros proyectiles permanezcan todo el tiempo
volando sobre el plano. Por ejemplo, sin el comportamiento, si el usuario dispara a un enemigo y
falla, la bala continuaría volando fuera del plano para siempre. Con el avance del juego, más y
más balas se añadirían, todas moviéndose más lejos y continuamente, lo que usaría más y más
memoria haciendo que el ordenador y el juego vayan más despacio. Esto se puede evitar
fácilmente añadiendo Destruir fuera del plano a las balas, para que se vayan eliminando de
forma gradual cuando salen del plano.
5.8 Arrastar y Soltar (Drag & Drop)
El comportamiento Arrastrar y Soltar hace que los objetos puedan ser arrastrados y soltado
con el ratón o tocándolos en una pantalla táctil. En dispositivos multi-táctiles varios objetos se
pueden arrastrar y soltar a la vez.

Un objeto se arrastra clicando sobre él con el ratón o con el dedo. La acción finaliza cuando se
suelta el ratón o se deja de tocar.

Arrastrar y Soltar no tiene propiedades

Condiciones de Arrastrar y Soltar

Se está arrastrando (Is dragging)


Verdadero si el objeto está siendo arrastrado en ese momento.

Comenzando a arrastrar (On drag start)


Detonado cuando el objeto es clicado o tocado.

Soltando (On drop)


Detonado cuando el objeto se está arrastrando y se suelta.

Acciones de Arrastrar y Soltar


Habilitar (Set enable)
Habilita o deshabilita el comportamiento Arrastrar y Soltar. Si está deshabilitado, al clicar o
tocar el objeto no habrá ningún efecto y el objeto no se podrá arrastrar. Además, se vuelve
“transparente” al tocarlo, haciendo que objetos por debajo puedan ser arrastrados y soltados. Si
el objeto se arrastra cuando está deshabilitado, se cancelará y no se detonará la condición
Soltando (On drop).

Expresiones de Arrastrar y Soltar


El comportamiento Arrastrar y Soltar no tiene expresiones.
5.9 Desvanecerse (Fade)
El comportamiento Desvanecerse aumenta o disminuye la opacidad del objeto haciendo que
aparezca y desaparezca. Por defecto, hace que el objeto se desvanezca 1 segundo antes de
destruirse.

Desvanecerse funciona en el orden siguiente. Si alguno de los tiempos es 0, el paso se salta:


1. El objeto aparece desde invisible a la opacidad seleccionada, en el tiempo de fundido (fade in
time).
2. El objeto mantiene su opacidad durante el tiempo de espera (wait time).
3. El objeto se desvanece hasta hacerse invisible, en el tiempo de desvanecimiento (fade out
time).
4. Si Destruir (Destroy) se establece tras Después de desvanecerse (After fade out), el objeto se
destruirá.

Por ejemplo, si cada paso está ajustado a 1 segundo, el objeto aparecerá desde invisible durante 1
segundo, esperará durante 1 segundo y se desvanecerá durante 1 segundo.

Se recomienda establecer Destruir (Destroy) tras Después de desvanecerse (After fade out). Si lo
estableces a No, el objeto seguirá existiendo tras desvanecerse, pero invisible. Si muchos objetos
usan este comportamiento, puede haber muchos objetos invisibles lo que ocupará memoria y el
juego irá lento.

Propiedades de desvanecerse
Activar al inicio (Activate at start)
Si Sí, el objeto empezará a desvanecerse tan pronto como sea creado. Si No, el desvanecimiento no
empezará hasta que uses la acción Empezar (Start).

Tiempo de fundido (Fade in time)


Tiempo, en segundos, de aparecer desde invisible. Si está a 0 se salta este paso.

Tiempo de espera (Wait time)


Tiempo, en segundos, de espera entre aparecer y desvanecerse. Si está a 0 se salta este paso.

Tiempo de desvanecimiento (Fade out time)


Tiempo, en segundos, de desvanecerse hasta invisible. Si está a 0 se salta este paso.

Destruir (Destroy)
Si se establece tras Después de desvanecerse (After fade out), el objeto será automáticamente
destruido tras la acción. Si No, el objeto no se destruirá con el comportamiento. Asegúrate de
destruir los objetos cuando no sean necesarios, ya que aquellos que están siendo invisibles pueden
causar que el juego se ralentice.

Condiciones de desvanecerse
Terminar desvanecerse (On fade out finished)
Detonado cuando se termina el desvanecimiento.
Acciones de desvanecerse
Comenzar desvanecimeinto de nuevo (Restart fade)
Hace funcionar el desvanecimiento otra vez desde el principio.
Comenzar desvanecimiento (Start face)
Si Activo en el inicio (Active on start) está en No, esto detonara el desvanecimiento.

Expresiones de desvanecerse
No hay expresiones para este comportamiento.

5.10 Flash
El comportamiento Flash hace que un objeto parpadee cambiando su visibilidad de forma
intermitente durante un periodo de tiempo. No tiene propiedades ni expresiones.
Solamente añadiendo Flash a un objeto no haces nada. Debes usar una acción de Flash para
hacerlo funcionar.

Condiciones de Flash
Esta haciendo flash (Is flashing)
Verdadero si el objeto está en dentro de un periodo de flash.

Flash terminado (On flash ended)


Detonado cuando se llega al final del periodo de flash, y el objeto es visible de nuevo.

Acciones de Flash
Flash
Hace que el objeto parpadee cambiando su visibilidad de forma intermitente. El “On” es el tiempo
en segundos en el que el objeto está visible. El “Off” es el tiempo en segundos en el que es
invisible. El objeto alternará entre estos dos estados durante los segundos establecidos. El objeto
siempre volverá a ser visible tras la acción.

Parar flash (Stop flashing)


Si el objeto está flasheando, esto lo para y vuelve el objeto visible. Si el objeto no está flasheando
en ese momento esta acción no tendrá efecto.
5.11 Saltar a través (Jump-thru)
El comportamiento Saltar a través permite que al comportamiento Plataforma estar sobre el
objeto, y saltar sobre él desde abajo. Este es diferente al comportamiento sólido, sobre el que el
comportamiento plataforma puede estar, pero no saltar desde abajo. La imagen siguiente ilustra la
diferencia.

El comportamiento Saltar a través no tiene propiedades, condiciones, acciones ni expresiones. Por


ello, también se le llama atributo, ya que sólo habilita que se pueda saltar a través de un objeto
con el comportamiento Plataforma.

5.12 Física (Physics)


El comportamiento Física simula la física de un objeto de forma realista. Funciona por
Box2DWeb ⇗. Para un ejemplo, mira Physics example on the Arcade ⇗. Para más ejemplos, hay
varios en la carpeta de ejemplos de C2.
El comportamiento Física es relativamente complejo. Los siguientes tutorial se recomiendan para
entender las bases sobre como usar el comportamiento y algunos puntos importantes a tener en
cuenta antes de usarlo:
Physics in Construct 2: The basics ⇗
Physics in Construct 2: Forces, impulses, torque and joints ⇗
Esta sección del manual no repetirá la información contenida en estos tutoriales. Simplemente
describirá cada una de las características del comportamiento Física. Los tutoriales describen
como funciona, que tipos de conjuntos hay, la diferencia entre impulsos y fuerzas, y otras cosas en
caso de que su uso no te sea familiar.

Usar Física en C2
El comportamiento Física simula las física en un plano separado. C2 mantendrá los dos “mundos”
sincronizados si uno cambia y el otro no, pero esto es impredecible. Por ejemplo, ajustar la
posición o el ángulo de un objeto hace que C2 traspase los nuevos datos del objeto
correspondiente a la simulación física, cosa que a veces no se hace de forma adecuada con las
colisiones. También pasa eso al usar otros comportamientos de C2 a la vez que el de Física.
Por lo tanto es altamente recomendado controlar los objetos de Física directamente desde el
comportamiento Física (ajustando fuerzas, impulsos, torsiones, etc.) más que intentar manipularlos
con Ajustar posición (Set position), Ajustar ángulo (Set angle), etc.
Otra consecuencia es que Física no responderá a objetos con los comportamientos Sólido (Solid) o
Saltar a través (Jumptrhu). Estos comportamientos son redundantes cuando usas Física y no
tienen efecto. A cambio, usa la propiedad Inmovible (Immovable).

Propiedades de Física
Inmovible (Immovable)
Si Sí, simula que el objeto tiene masa infinita. Su densidad se ignora y nunca se moverá.

Máscara de collision (Collision mask)


Usar máscara de colisión (Use collision mask) usa el polígono de colisión del objeto del editor de
imágenes para colisiones físicas. Si no hay polígono de colisión usará el cuadro delimitador.
Cuadro delimitador (Bounding box) ignora el polígono de colisión del objeto si hay y el
comportamiento considera el objeto como si fuera un rectángulo.
Círculo (Circle) ignora el polígono de colisión del objeto si hay y el comportamiento considera el
objeto como si fuera un círculo. Esto permite que los objetos rueden suavemente (por ejemplo, un
barril). Esto es útil cuando el polígono de colisión está formado por líneas rectas y no se puede
crear un círculo.

Evitar rotación (Prevent rotation)


Bloquea el ángulo del objeto para que la colisión física no cause rotación.

Densidad (Density)
La densidad del objeto físico. Solo se usa si la Inmovilidad está en No. La masa del objeto se
calcula como su densidad multiplicada por el área de su máscara de colisión. El valor de la
densidad exacta usada no es importante y no tiene unidades específicas – sólo la densidad relativa
es relevante (un objeto con densidad 6 será dos veces más denso que otro con densidad 3).

Fricción (Friction)
El coeficiente de fricción del objeto físico de 0 (sin fricción) a 1 (fricción máxima). Esto ajusta
como los objetos se mueven unos contra otros cuando se tocan.

Elasticidad (Elasticity)
La elasticidad (también llamada restablecimiento o flexibilidad) del objeto físico, de 0 (inelástico, como
una piedra) a 1 (elasticidad máxima, como una pelota de goma). Esto afecta a como los objetos rebotan
cuando golpean el suelo.
Amortiguación linear (Linear damping)
La tasa a la que el objeto disminuye su velocidad cuando se mueve, desde 0 (no decelera) a 1
(deceleración máxima).

Amortiguación angular (Angular damping)


La tasa a la que el objeto disminuye su velocidad cuando gira, desde 0 (no decelera) a 1
(deceleración máxima).

Bala (Bullet)
Habilita una mejor detección de la colisión para objetos que se mueven muy rápido. Puede afectar
al rendimiento, así que no lo habilites a menos que el objeto se mueva tan rápido que la detección
de la colisión estándar no sea fiable.

Condiciones de física
Está durmiendo (Is sleeping)
Verdadero si el objeto ha estado descansando y no ha sido movido por un tiempo, por lo que el
motor de física no lo estará procesando. Nota que los objetos pueden estar moviéndose de forma
imperceptible lo que evitará que “se queden durmiendo” aunque den la sensación de estarlo.

Acciones de física: Fuerzas


Aplicar fuerza (Apply force)
Aplicar fuerza al ángulo (Apply force at angle)
Aplicar fuerza hacia la posición (Apply force towards position)
Aplica una fuerza sobre el objeto, ángulo, hacia la posición, o fuerzas en los ejes X e Y
personalizadas. Aplicando una fuerza haces que el objeto se acelere en la dirección de la fuerza.
Las fuerzas se pueden aplicar en un punto de la imagen o en el origen del objeto.

Aplicar impulse (Apply impulse)


Aplicar impulse al ángulo (Apply impulse at angle)
Aplicar impulse hacia la dirección (Apply impulse towards position)
Aplica un impulso sobre el objeto, ángulo, hacia la posición, o impulso en los ejes X e Y
personalizados. Aplicando un impulso simulas que el objeto se estrella, como golpear con un bate.
Los impulsos se pueden aplicar en un punto de la imagen o en el origen del objeto.
Ajustar velocidad (Set velocity)
Ajusta la velocidad del objetivo, dándola en píxeles por segundo en los ejes X e Y.

Acciones de física: Ajustes globales

Estas acciones afectan al comportamiento Física en general, no solo donde se han establecido.

Habilitar/Deshabilitar colisiones (Enable/disable collisions)


Por defecto, todos los objetos con Física colisionan unos con otros. Puedes deshabilitar las
colisiones entre los objetos con Física y los que no lo tengan para que pasen unos sobre otros. Esto
afectará a todos los ejemplo de ambos tipos de objeto. Nota: habilitar las colisiones otra vez
cuando los objetos se solapan puede causar inestabilidad en la simulación.

Ajustar iteraciones (Set stepping iterations)

Ajusta el número de iteraciones de la velocidad y de la posición usadas en el motor de física. Por


defecto son 8 y 3 respectivamente. Valores más bajos harán que vaya más rápido pero son menos
precisos, y los más altos reducirán el rendimiento pero darán una simulación más realista.

Ajustar modo de paso (Set stepping mode)

Elige si los tiempos de Física usan dt (delta time, para una tasa de frames independiente) o un
valor fijado (fixed). Por defecto usa un tiempo fijado para eliminar cualquier aleatoriedad que
venga de dt, asegurando que las simulaciones se reproducen exactamente todas las veces. Ajusta a
tasa de frames independiente (framerate independent) para ajustar el tiempo de a cuerdo a la tasa
de frames (framerate), que puede causar que la misma simulación de distintos resultados si se
vuelve a reproducir. Para más información ve a Delta-time and framerate independence ⇗.

Ajustar gravedad del mundo (Set world gravity)

Ajusta la fuerza de la gravedad que afecta a los objetos físicos. Por defecto, es una fuerza de 10
puntos descendentes.
Acciones de física: Uniones
Crear unión de distancia (Create distance joint)
Fija dos objetos físicos a una distancia fijada, como si estuviesen conectados por un polo.

Crear unión mecánica (Create revolute joint)


Crear unión mecánica limitada (Create limited revolute joint)
Crea una articulación entre dos objetos físicos, para que puedan rotar libremente como si
estuviesen conectados por un alfiler. Si es limitada solamente permite la rotación hasta cierto
ángulo, como el badajo de una campana.

Quitar todas las uniones (Remove all joints)


Quita todas las uniones de un objeto. Cualquier objeto que esté unido a otro por esta acción se
verá afectado. Nota que algunas uniones deshabilitan automáticamente colisiones entre objetos, así
que quizás quieras deshabilitar las colisiones manualmente de nuevo tras quitar las uniones. De
otra forma los objetos que se solapen podrían “teletransportarse” a otro lugar (ya que el motor
físico intenta evitar los solapamientos).

Acciones de física: Ajustes de objeto


Estas ajustan las propiedades correspondientes. Para más información, ve a las propiedades de
Física.

Acciones de física: Rotaciones


Aplicar rotación (Apply torque)
Aplicar rotación hacia ángulo (Apply torque towards angle)
Aplicar rotación hacia posición (Apply torque towards position)
Aplica una rotación (aceleración rotacional) al objeto, directamente o hacia un ángulo o posición.

Ajustar velocidad angular (Set angular velocity)


Ajusta la velocidad angular (tasa de rotación) directamente, en grados por segundo.

Expresiones de Física
Velocidad angular (AngularVelocity)
La velocidad angular actual (tasa de rotación) del objeto físico, en grados por segundo.

Centro de Masa X (CenterOfMassX)


Centro de Masa Y (CenterOfMassY)
La posición del centro de la masa del objeto físico, calculado por el motor físico. Depende de la
propiedad máscara de colisión (collision mask) y no tiene por qué coincidir con el centro del
objeto.

Masa (Mass)
La masa del objeto físico, calculada por el motor físico. Es el área de la máscara de colisión del
objeto multiplicada por su densidad.
Velocidad X (VelocityX)
Velocidad Y (VelocityY)
La velocidad actual del objeto físico, en píxeles por segundo.

Amortiguación angular (AngularDamping)


Densidad (Density)
Elasticidad (Elasticity)
Fricción (Friction)
Amortiguación linear (LinearDamping)
Da las propiedades correspondientes. Para más información, ve a las propiedades de Física.

5.13 Pin
El comportamiento Pin posiciona un objeto a una distancia y ángulo relativo a otro, dando la
impresión de estar “atado” a ese objeto. Para un ejemplo, ve a Pin behavior.capx en la carpeta de
ejemplos de C2.

Añadir simplemente el comportamiento al objeto no hará nada. Debes usar alguna de las acciones
de Pin para unir un objeto a otro.

Condiciones de Pin
Está atado (Is pinned)
Verdadero si el objeto está atado a otro.

Acciones de Pin
Atar a objeto (Pin to object)
Ata un objeto a otro. La distancia y el ángulo relativo entre los objetos usados en el momento de la
acción se recordará. El parámetro Modo (Mode) elige como se mueve el objeto en relación al otro:
Posición y ángulo (Position & angle) (por defecto): mantiene ambos objetos a su distancia y
ángulo relativo. El objeto aparecerá unido y estará en el lugar mientras el otro se mueve y rota.

Sólo posición (Only position): como antes, pero el ángulo del objeto no cambia; solo mantiene la
distancia relativa.
Sólo ángulo (Only angle): el objeto solamente rota en relación con el otro, y no cambia su
posición.
Estilo cuerda (Rope style): el objeto no rota, pero se mantiene a la distancia máxima del otro.
Estilo barra (Bar style): el objeto no rota, pero se mantiene a una distancia fijada del otro objeto.
Para más ejemplos, ve a los ejemplos Pin rope style.capx y Pin chain style.capx de la carpeta de
ejemplos de C2.
Desatar (Unpin)
Desata el objeto, así que ya no será situado por el comportamiento Pin.

Expresiones de Pin
Atado UID (PinnedUID)
Da la UID del objeto al que está atado, o a -1 si no está atado. Para más información sobre UID,
ve a características comunes (common features).

5.14 Plataforma (Platform)


El comportamiento Plataforma da un estilo de movimiento “salta y corre” a juegos de vista
lateral. Soporta inclinaciones, plataformas móviles, plataformas para “saltar a través” y ángulos
arbitrarios de gravedad. Hay varios ejemplos de este comportamiento en la carpeta de ejemplos de
C2.

El comportamiento Plataforma se aplicará en cualquier objeto con el comportamiento Sólido o


Saltar a través. Saltar a través es diferente ya que se puede saltar a la plataforma sobre un objeto
desde abajo, mientras que al saltar a un Sólido desde abajo el jugador rebota. La siguiente imagen
ilustra la diferencia.

Por defecto, el movimiento de la Plataforma se controla con las flechas del teclado (arriba para
saltar). Para personalizar los controles, ve al resumen de referencia de comportamientos (behavior
reference summary).

Crear movimientos de plataforma fiables


Para los movimientos más fiables se recomienda usar un sprite de rectángulo invisible sin
animaciones. Entonces, el jugador podrá situarse encima de él. De otra forma, la forma cambiante
del polígono de colisión y su animación podrían interferir con el movimiento sobre el suelo de la
plataforma, muro o inclinación, causando temblores o movimientos extraños. Para más
información y una guía completa, mira el tutorial How to make a Platform game ⇗.
Espejar al jugador
No es necesario duplicar el dibujo de tu jugador para poder usar los dos perfiles, el izquierdo y el
derecho. Simplemente dibuja al jugador mirando a la derecha y usa la acción Espejar (Set
mirrored). Ajusta que el jugador se espeje cuando presionas las teclas de control del movimiento.
Abajo un ejemplo.

Una pregunta frecuente es como hacer que el jugador dispare a la izquierda y a la derecha, ya que
incluso cuando los espejas el jugador seguirá disparando a la derecha. Para solucionar esto usa la
condición Está espejado (Is mirrored) y si es verdadera, que dispare a la izquierda.

Propiedades de la Plataforma
Velocidad máxima (Max speed)
La velocidad máxima del suelo en píxeles por segundo.

Aceleración (Acceleration)
La aceleración del movimiento horizontal en píxeles por segundo por segundo.

Deceleración (Deceleration)
La deceleración del movimiento horizontal en píxeles por segundo por segundo. Cuando se mueve
en la dirección contraria al movimiento aceleración y deceleración se combinan.

Fuerza del salto (Jump strength)


La velocidad vertical del salto al inicio en píxeles por segundo cuando se pulsa la tecla de saltar.
Gravedad (Gravity)
La aceleración causada por la gravedad, en píxeles por segundo por segundo.

Velocidad máxima de caída (Max fall speed)


La velocidad máxima en píxeles por segundo a la que el objeto puede acelerar cuando hace caída
libre.

Controles por defecto (Default controls)


Si Sí, el movimiento se controlará con las flechas izquierda y derecha del teclado y el salto con la
flecha de arriba. Ajústalo a No para usar controles personalizados usando la acción Simular
control (Simulate control) en el resumen de referencia de comportamientos (behavior reference
summary).
Condiciones de la Plataforma

Cotejar velocidad (Compare speed)


Coteja la velocidad del objeto en píxeles por segundo.
Hay un muro (Is by wall)
Comprueba si hay un sólido que bloquee el movimiento horizontal en el objeto inmediatamente a
la izquierda o derecha. Saltar a través no cuenta como pared.

Está cayendo (Is falling)


Verdadero si el objeto está en caída libre.

Está saltando (Is jumping)


Verdadero si el objeto se está moviendo hacia arriba.

Está en el suelo (I son floor)


Verdadero si el objeto está sobre un objeto sólido o sobre un saltar a través.

En caída (On fall)


En salto (On jump)
En tierra (On landed)
En movimiento (On moved)
En parade (On stopped)
Estos son detonadores de animación que se detonan cuando hay movimiento entre los estados. Si
tu objeto tiene animación para alguno de estos estados, debes establecer la animación apropiada
para cada detonador. Esto te ayuda a ahorrar lógica que detecta estados de transición.

Acciones de Plataforma
Caer a través de (Fall through)
Si el jugador está sobre una plataforma con Saltar a través, esta acción lo hará caer a través de ella.
Es útil para añadir otro control, la flecha hacia abajo, para bajar de las plataformas.

Ajustar aceleración (Set acceleration)


Ajustar deceleración (Set deceleration)
Ajustar gravedad (Set gravity)
Ajustar fuerza del salto (Set jump strength)
Ajustar velocidad máxima de caída (Set max fall speed)
Ajustar velocidad máxima (Set max speed)
Ajusta las propiedades correspondientes. Para más información, mira las propiedades de
Plataforma.

Ajustar ángulo de gravedad (Set angle of gravity)


Cambia el ángulo de gravedad, en grados. Por defecto es 90 (hacia abajo en la pantalla). Esto
puede interactuar de forma interesante con la rotación de la capa. Habilitar (Set enabled)

Habilita o deshabilita el movimiento de la Plataforma. Cuando está deshabilitado, el


comportamiento no afecta al objeto.

Establecer ignorar entrada (Set ignoring input)


Determina si se ignora una entrada. Si se ignora, presionar cualquiera de las teclas de control no
tendrá efecto. Pero, a diferencia de deshabilitar el comportamiento, el objeto continuará
moviéndose (por ejemplo, si está en caída libre).

Ajustar vector X (Set vector X)


Ajustar vector Y (Set vector Y)
Ajusta los componentes de los movimientos horizontales y verticales manualmente, en píxeles por
segundo. Por ejemplo, ajustando el vector Y a -1000 hará que se salte con una fuerza de 1000, lo
que puede ser útil para añadir muelles.

Simular control (Simulate control)


Simula el control de movimiento que se está pulsando. Útil cuando estableces No en los Controles
por defecto. Ve a Controles personalizados en el resumen de referencia (behavior reference
summary) de comportamientos para más información.

Expresiones de Plataforma
Aceleración (Acceleration)
Deceleración (Deceleration)
Gravedad (Gravity)
Fuerza del salto (JumpStrength)
Velocidad máxima de caída (MaxFallSpeed)
Velocidad máxima (MaxSpeed)
Da las propiedades correspondientes. Para más información, ver las propiedades de Plataforma.

Ángulo de movimiento (MovingAngle)


Da el ángulo de movimiento en grados, que puede ser distinto del ángulo del objeto.

Velocidad (Speed)
Da la velocidad total en píxeles por segundo.

VectorX
VectorY
Da los componentes de movimiento de X e Y, en píxeles por segundo.
5.15 Rotar (Rotate)
El comportamiento Rotar simplemente hace que el objeto gire.

Propiedades de Rotar

Velocidad (Speed)
La tasa de rotación, en grados por segundo. Usa un valor positivo para rotación en el sentido de las
agujas del reloj y negativo para el sentido contrario.

Aceleración (Acceleratio)
La tasa a la que cambia la velocidad de rotación, en grados por segundo por segundo. Usa un valor
positivo para acelerar en el sentido de las agujas del reloj y negativo para el sentido contrario.

Condiciones de Rotar
El comportamiento Rotar no tiene condiciones.

Acciones de Rotar
Ajustar aceleración (Set acceleration)
Ajustar velocidad (Set speed)
Ajusta las propiedades correspondientes. Mira las propiedades de Rotar.

Expresiones de Rotar
Aceleración (Acceleration)
Da la propiedad Aceleración correspondiente.

Velocidad (Speed)
Da la velocidad de rotación, en grados por segundo. Un valor positivo indica rotación en el sentido
de las agujas del reloj y negativo en el sentido contrario.
5. 16 Desplazarse a (Scroll to)
El comportamiento Desplazarse a simplemente centra la vista en el objeto con el
comportamiento. Es un acceso directo para la acción del sistema Desplazarse al objeto (Scroll to
object). Además, da la opción de Agitar la pantalla, y si varios objetos tienen el comportamiento
es centrará la vista entre todos ellos.

Si necesitas un desplazamiento más avanzado, como limitado a ciertas regiones o siguiendo al


jugador tras un retraso, desplázate a un objeto invisible que controles por eventos.

Para desplazarte, el tamaño del plano debe ser mayor que el de la ventana, o la propiedad de
desplazamiento ilimitado (Unbounded scrolling) seleccionada. De otra manera no habría donde
desplazarse y el comportamiento no tendría efecto.

Desplazarse a no tiene propiedades, condiciones no expresiones.

Acciones de Desplazarse a
Agitar (Shake)
Agitar la pantalla durante un periodo de tiempo, compensando la posición de la pantalla
aleatoriamente cada vez. La Magnitud (Magnitude) es la distancia máxima en píxeles de la
posición del desplazamiento hasta que se compensa vista. La Duración (Duration) es cuánto
durará el movimiento en segundos. En el modo Reducir magnitud (Reducing magnitude), la
Magnitud se reducirá gradualmente hasta cero una vez llegados al fin el movimiento. En el modo
Magnitud Constante (Constant magnitude) la Magnitud permanecerá estable hasta el final del
movimiento y parará de forma abrupta.

5.17 Seno (Sine)


El comportamiento Seno puede ajustar las propiedades de un objeto (como su posición, tamaño o
ángulo) de menos a más usando una onda sinusoidal que puede oscilar. Se puede usar para crear
efectos visuales más interesantes. A pesar del nombre, la función alternativa de la onda
“Triángulo” se pude usar para crear distintos efectos. Puedes encontrar en Wikipedia ⇗ diferentes
tipos de ondas.

Para ejemplos de este comportamiento en distintos modos ve a Sine behavior - types.capx en la


carpeta de ejemplos del directorio de instalación de C2.

Propiedades de Seno
Activo desde el inicio (Active on start)
Si No, el comportamiento no tendrá efecto hasta que se use la acción Activar (Set active).

Movimiento (Movement)
El comportamiento tiene 8 modos diferentes:
Horizontal mueve el objeto de izquierda a derecha en el eje X.
Vertical mueve el objeto arriba o abajo en el eje Y.
Tamaño (Size) hace que el objeto crezca o se reduzca.
Amplitud (Width) hace el objeto más ancho o más estrecho.
Altura (Height) hace el objeto más alto o más bajo.
Ángulo (Angle) rota el objeto en el sentido de las agujas del reloj o al contrario.
Opacidad (Opacity) cambia la opacidad del objeto. Va de 0 a 100.
Sólo valor (Value only) no modifica el objeto. Simplemente almacena los valores cambiantes a los
que acceder con la expresión Valor (Value). Puede ser útil para crear efectos personalizados o
modificar cualquier propiedad del objeto o comportamiento basándote en el comportamiento
Seno.

Onda (Wave)
Esta función se usa para calcular el movimiento. Para verlo ve a este diagrama en Wikipedia (this
Wikipedia diagram ⇗).
Seno (Sine) - una suave oscilación del movimiento basada en la onda sinusoidal.
Triángulo (Triangle) - un movimiento linear de adelante a atrás.
Diente de sierra (Sawtooth) - movimiento linear con un salto al volver al inicio.
Diente de sierra invertido (Reverse Sawtooth) - lo anterior invertido.
Cuadrado (Square) - alternar entre los dos valores máximos.

Periodo (Period)
La duración, en segundos, de un ciclo completo que se repite.

Periodo aleatorio (Period random)


Una cantidad aleatoria de segundos añadidos al periodo en cada ejemplo. Te puede ayudar a variar
la apariencia cuando muchos ejemplos usan el comportamiento Seno.

Periodo compensado (Period offset)


El tiempo inicial en segundos del ciclo. Por ejemplo, si el periodo es de 2 segundos y el periodo
compensado es de 1, el comportamiento Seno empezará a la mitad del ciclo.

Periodo compensado aleatorio (Period offset random)


Una cantidad aleatoria de segundos añadidos al periodo compensado. Te puede ayudar a variar la
apariencia cuando muchos ejemplos usan el comportamiento Seno.

Magnitud (Magnitude)
El cambio máximo de la posición, tamaño o ángulo del objeto. Está en píxeles para posición y
para el tamaño y en grados para el ángulo.

Magnitud aleatoria (Magnitude random)


Un valor aleatorio añadido a la magnitud para cada ejemplo. Te puede ayudar a variar la
apariencia cuando muchos ejemplos usan el comportamiento Seno.

Condiciones de Seno
Cotejar magnitud (Compare magnitude)
Coteja la magnitud actual del movimiento.

Cotejar movimiento (Compare movement)


Coteja la propiedad Movimiento actual del comportamiento.

Cotejar periodo (Compare period)


Coteja el periodo de movimiento actual, en segundos.
Cotejar onda (Compare wave)
Coteja la propiedad Onda actual del comportamiento.

Está activo (Is active)


Verdadero si el comportamiento está activo.

Acciones de Seno
Activar (Set active)
Habilita o deshabilita el comportamiento. Cuando está deshabilitado el comportamiento no afecta
al objeto.

Ajustar magnitud (Set magnitude)


Ajusta la magnitud del ciclo. Está en píxeles cuando modifica la posición o el tamaño y en grados
cuando modifica el ángulo.

Ajustar movimiento (Set movement)


Cambia el tipo de movimiento del comportamiento, por ejemplo, de Horizontal a Tamaño.

Ajustar periodo (Set period)


Ajusta la duración de un único ciclo completo, es segundos.

Ajustar onda (Set wave)


Cambia la propiedad Onda, eligiendo una función distinta para calcular el movimiento.

Expresiones de Seno
Posición de Ciclo (CyclePosition)
Da el valor de 0 a 1 que representa el progreso a través del ciclo actual. Por ejemplo, será 0,5
cuando el ciclo esté a la mitad.

Magnitud (Magnitude)
Da la magnitud del ciclo actual. Está en píxeles cuando modifica la posición o el tamaño y en
grados cuando modifica el ángulo.

Periodo (Period)
Da el periodo de un único ciclo completo en segundos.

Valor (Value)
Da el valos cambiante u oscilante. Se alternará como valores positivos y negativos centrados en 0.
Es útil para crear efectos personalizados cuando está en modo Sólo valor (Only value).

5.18 Sólido (Solid)


El comportamiento Sólido hace que otros comportamientos reaccionen como si fuera un
obstáculo infranqueable. Los objetos con este comportamiento se llaman Sólidos. Afecta a los
siguientes comportamientos:
 8 Direcciones, que queda bloqueado por los sólidos.
 Bala, que puede rebotar en los sólidos, opcional.
 Coche, que rebota en los sólidos.
 Plataforma, que puede posarse sobre un sólido. Plataforma no puede saltar sobre sólidos
desde abajo, para esto usa el comportamiento Saltar a través.
Nota que al comportamiento Física no le afectan los objetos sólidos. A cambio, usa el
comportamiento con Inmovible (Immovable) activado, Yes.
El comportamiento Sólido no tiene propiedades, condiciones, acciones ni expresiones a parte de la
acción Habilitar (Set enabled). Por esto, también se le llama atributo. Este comportamiento es
fundamental en C2, y otras muchas funciones del programa interactúan con él. Por ejemplo, el
comportamiento de Movimientos personalizados tiene acciones para empujar el objeto fuera de
sólidos.

Evita bloquear/ atrapar objetos con Sólidos


Los comportamientos que responden al Sólido normalmente se bloquean o se quedan atrapados en
el interior del objeto Sólido. En este caso no hay solución para continuar el movimiento. Las
únicas tres opciones son 1) dejarlo atascado, 2) permitir al objeto moverse dentro de los sólidos o
3) teletransportar el objeto al espacio libre más cercano, que en algunos casos puede estar muy
lejos. Ya que las opciones 2 y 3 pueden causar comportamientos extraños, C2 hará de forma
deliberada que el objeto quede incapacitado para moverse. Así que es tu tarea diseñar juegos de tal
forma que el jugador no se pueda quedar atascado o atrapado moviendo objetos Sólidos. Debes
tener especial cuidado cuando mueves Sólidos contra otros Sólidos.

Es sólo por mover (o rehabilitar) Sólidos, o usar Ajustar posición (Set position), que el objeto
pueda quedar atrapado. Si ninguno de los Sólidos de tu juego se mueven y no “teletransportas” al
jugador usando Ajustar posición (Set position), será prácticamente imposible que el jugador se
quede atrapado.

Acciones de Sólido
Habilitar (Set enabled)
Habilita o Deshabilita Sólido de ese objeto. Si lo deshabilitas, el objeto no actuará como si fuera
un sólido, y los objetos podrán pasar a través de él. Ten cuidado de no atrapar objetos habilitando
el sólido otra vez cuando se están solapando, mira la sección anterior.

5.19 Rodear (Wrap)


El comportamiento Rodear simplemente reposiciona el objeto en el lado contrario del plano, si
éste sale de él. No tiene propiedades, condiciones, acciones ni expresiones.
El objeto solo rodea una vez haya salido completamente del plano, ninguna parte de su cuadro
delimitador estará dentro del plano.
6. Referencia de Plugins
El objeto solo rodea una vez haya salido completamente del plano, ninguna parte de su cuadro
delimitador estará dentro del plano. Esta sección da una referencia a todos los plugins oficiales que hay en
C2. Cada uno tiene un resumen de su uso, una lista de propiedades y una detallada lista de acciones,
condiciones y expresiones.

Muchos plugings comparten acciones, condiciones y expresiones. Se describen como Características


comunes en vez de repetir la información en cada plugin.

6.1 Características Comunes (Common features)


Muchos plugings comparten acciones, condiciones y expresiones; como el tamaño y la posición del
objeto. Aquí se describen todas en vez de repetir la información en cada plugin.

No todos los objetos usan todas las características comunes, algunos usan sólo unos pocos de los listados.
Esta lista es una referencia de las características que puedes encontrar en C2, sin describirse ningún
plugin en particular.

IDs unicas (UIDs)


Todos los objetos en tiempo de ejecución tienen asignada una única ID, que es un número que empieza
por 0 para el primer ejemplo y que va sumando 1 para los siguiente ejemplos. Viene dado por la
expresión UID. Este número se puede utilizar para identificar únicamente un ejemplo en todo el juego.
Por ejemplo, puede almacenarse en las variables de ejemplo y en las variables de evento y luego
recogerlas de nuevo usando la condición Recoger por ID única (Pick by unique ID).

Índice de IDs (IIDs)


Todos los objetos en tiempo de ejecución tiene asignado un índice de ID, que es el número de ejemplo
dentro del tipo de objeto. Viene dado por la expresión IID del objeto. Por ejemplo, los primeros ejemplos
de dos tipos distintos de objeto tendrán, ambos un IID 0, los segundos 1 y así sucesivamente. Por ello, el
IID no identifica a un único ejemplo como lo hace UID, ni se refiere de forma constante al mismo grupo
de ejemplos (si se destruye IID 0, el siguiente ejemplo adquirirá IID 0). Pero puede ser útil para que los
usuarios avanzados se beneficien del índice de expresiones de objeto y de la condición del sistema
Recoger ejemplo Nth (Pick Nth instance).

6.1.1 Condiciones communes


Las siguientes condiciones son comunes a varios plugins.

Ángulo (Angle)
Nota que los ángulos en C2 empiezan en 0 grados mirando hacia la derecha y avanzan en el sentido de las
agujas del reloj.

Está entre ángulos (Is between angles)


Verdadero si el ángulo actual del objeto está entre los dos ángulos dados en grados. El primer y el
segundo ángulo deben estar en el sentido de las agujas del reloj. Está entre 0 y 45 grados (Is between 0
and 45 degrees) es verdadero si el objeto está en un área de 45 grados, pero Está entre 45 y 0 grados (Is
between 45 and 9 degrees) es verdadero si el objeto está en un área de 315 grados desde los 45 hasta los
0.

Está en el sentido de las agujas del reloj (Is clokwise from)


Verdadero si el ángulo actual del objeto está en el sentido de las agujas del reloj respecto al ángulo dado
en grados. Invierte para comprobar si el objeto está en el sentido contrario. Por ejemplo, un objeto a 45
grados está en el sentido de las agujas del reloj con respecto a 0 grados, pero otro a 0 grados estaría en el
sentido contrario con respecto a 45 grados.

Está dentro del ángulo (Is within angle)


Verdadero si el ángulo actual del objeto está dentro del número de grados de otro ángulo. Esto es más
fiable que comprobar si el ángulo del objeto es exactamente igual al otro ángulo. Está dentro de 0,5
grados en 90 grados (Is within 0.5 degrees of 90 degrees) es probablemente mejor que Ángulos iguales a
90 grados (Angle equals 90 degrees), ya que hay muchos casos en los que el objeto puede estar muy
cerca, pero no medir exactamente 90 grados.

Apariencia (Appearance)
Cotejar opacidad (Compare opacity)
Coteja la opacidad del objeto, de 0 (transparente) a 100 (opaco).

Es visible (Is visible)


Verdadero si el objeto es visible en ese momento. Invierte para comprobar si es invisible. Esto sólo
comprueba la visibilidad establecida por la acción Hacer visible (Set visible); so le afecta si el objeto está
fuera de la pantalla, si tiene opacidad 0 o si está en una capa invisible.

Variables de ejemplo (Instance variables)


Cotejar variable de ejemplo (Compare instance variable)
Coteja el valor actual de una de las variables de ejemplo del objeto.

La variable de ejemplo booleana esta activa (Is boolean instance variable set)
Comprueba si una variable de ejemplo booleana es verdadera. Invierte la condición para comprobar si es
falsa.

Miscelanea (Misc)
Creado (On created)
Destruido (On destroyed)
Detonados para cada ejemplo que se crea o se destruye durante el juego. Por ejemplo, un efecto de
partículas se puede activar siempre que un objeto se crea, y una explosión siempre que se destruye. Estas
condiciones son análogas a los constructores y los destructores en un lenguaje de programación
tradicional (comandos que funcionan en la creación y destrucción de objetos). Ten cuidado de no crear un
objeto del mismo tipo en un evento Creado (On created) (On Sprite2 created: create Sprite2) ya que
creará un bucle infinito y el juego se enganchará.

Recoger (Pick)
Recoger por ID única (Pick by unique ID) (UID)
Recoge el ejemplo que coincide con el número de ID dado.

Recoger el más cercano/lejano (Pick nearest/furthest)


Recoge el ejemplo más cercano o lejano de una posición del plano dada.
Tamaño y Posición (Size & Position)
Cotejar amplitude (Compare width)
Cotejar altura (Compare height)
Coteja el tamaño actual del objeto, en píxeles.

Cotejar X (Compare X)
Cotejar Y (Compare Y)
Coteja la posición del objeto en el plano, en píxeles. Nota que los objetos se pueden posicionar entre
píxeles (5,5 o 10,33333). Por ello es una mala idea confiar que un objeto este en una posición exacta.

Está en pantalla (Is on-screen)


Verdadero si una parte del cuadro delimitador del objeto está dentro del área de la pantalla. La visibilidad
o la opacidad no lo afectan.

Está fuera del plano (Is outside layout)


Verdadero si el cuadro delimitador del objeto está completamente fuera del área del plano.

Orden Z (Z Order)
Está en la capa (Is on layer)
Recoge todos los ejemplos de una capa dada, especificados por su nombre o por su índice basado en cero.

Recoger de arriba/abajo (Pick top/bottom)


Recoge el ejemplo de más arriba o de más abajo, teniendo en cuenta las capas y el índice Z. Por ejemplo,
el ejemplo del frente de la capa más cercana es el ejemplo de arriba.

6.1.2 Acciones communes


Las siguientes acciones son comunes a varios plugins.

Ángulo (Angle)
Nota que los ángulos en C2 empiezan en 0 grados mirando hacia la derecha y avanzan en el sentido de las
agujas del reloj.

Rotar en el sentido de las agujas del reloj (Rotate clockwise)


Rota el objeto en un número de grados en el sentido de las agujas del reloj.

Rotar en el sentido contrario a las agujas del reloj (Rotate counter-clockwise)


Rota el objeto en un número de grados en el sentido contrario a las agujas del reloj.

Rotar hacia ángulo (Rotate toward angle)


Rota el objeto en un número de grados hacia otro ángulo. Si el objeto está cerca del ángulo objetivo no lo
sobrepasará (Acabará exactamente en el ángulo objetivo).

Rotar hacia posición (Rotate toward position)


Rota el objeto en un número de grados hacia la posición. Si el objeto está cerca del ángulo objetivo no lo
sobrepasará (Acabará exactamente en el ángulo objetivo).
Ajustar ángulo (Set Angle)
Ajusta el ángulo del objeto en grados, de 0 a 360. 0 grados miran a la derecha y aumenta en el sentido de
las agujas del reloj.

Ajustar ángulo hacia la posición (Set angle toward position)


Ajusta el ángulo del objeto para que se posicione en un sitio concreto del plano.

Apariencia (Appearance)
No todos los objetos soportan las acciones en relación con los efectos. Para más información ve a Efectos.

Ajusta modo de fusión (Set blend mode)


Cambia la forma en la que el objetos se funde con el fondo alterando la propiedad del objeto Modo de
fusión (Blend Mode).

Habilita efecto (Set effect enabled)


Habilita o deshabilita uno de los efectos añadidos la objeto.

Ajusta parámetro de efecto (Set effect parameter)


Cambia el valor de uno de los parámetros de un efecto añadido al objeto. El parámetro que se cambia se
especifica por su índice basado en 0, es decir, 0 para cambiar el primer parámetro, 1 para cambiar el
segundo y así sucesivamente.

Ajustar opacidad (Set opacity)


Ajusta la opacidad del objeto (o semitransparecia) de 0 (transparente) a 100 (opaco).

Hacer visible (Set visible)


Hace el objeto visible o invisible (escondido).

Variables de ejemplo (Instance variables)


Añadir a (Add to)
Quitar de (Subtract from)
Modifica el número de la variable de ejemplo.

Ajustar (Set)
Ajusta un número o texto a la variable de ejemplo.

Ajustar booleano (Set boolean)


Ajusta la variables de ejemplo booleana, que puede tener un valor verdadero a falso.

Alternar booleano (Toggle boolean)


Alterna una variable de ejemplo booleana, que cambia de verdadera a falsa y viceversa.

Miscelanea (Misc)
Destruir (Destroy)
Elimina el objeto del juego.

Tamaño y Posición (Size & Position)


Mover al ángulo (Move at angle)
Mueve el objeto un número de píxeles hacia un ángulo dado en píxeles.

Mover adelante (Move forward)


Mueve el objeto un número de píxeles hacia adelante en el ángulo actual del objeto.

Ajustar amplitud (Set width)


Ajustar altura (Set height)
Ajustar tamaño (Set size)
Ajustan el tamaño actual el objeto en píxeles.

Ajustar X (Set X)
Ajustar Y (Set Y)
Ajustar posición (Set position)
Ajusta la posición del objeto en el plano, en píxeles. El origen (0,0) es la parte de arriba a la derecha del
plano y el eje Y se incrementa hacia abajo.

Ajustar posición a otro objeto (Set position to another object)


Posiciona el objeto de acuerdo a otro. También puede posicionarse en relación a un punto de imagen de
un objeto dado.

Orden Z (Z Order)
Mover abajo (Move to bottom)
Mover arriba (Move to top)
Posiciona el objeto en la parte de arriba o de abajo de la capa actual.

Mover a capa (Move to layer)


Mueve el objeto a la parte de arriba de la capa dada, por su nombre o por su índice basado en 0. Si el
objeto ya está en la capa dada la acción no tendrá efecto.

6.1.3 Expresiones comunes


Las siguientes expresiones son comunes a varios plugings.

Ángulo (Angle)
Ángulo (Angle)
El ángulo actual del objeto en grados. 0 grados comienza a la derecha y se incrementa en el sentido de las
agujas del reloj.

Apariencia (Appearance)
Opacidad (Opacity)
La opacidad actual del objeto (semitransparencia), de 0 (transparente) a 100 (opaco).

Miscelanea (Misc)
Conteo (Count)
El número de ejemplos de ese tipo de objeto

Conteo recogido (PickedCount)


El número de ejemplos que reúnen la condición del evento. Por ejemplo, si el evento tiene la condición
“El Ratón está sobre el Sprite” (“Mouse is over Sprite”), Sprite.PickedCount dará el número de ejemplos
sobre los que está el ratón.
IID
Da el índice del ejemplo (IID). Ver características comunes.

UID
Da la ID única del ejemplo (UID). Ver características comunes.

Tamaño y Posición (Size & Position)


Amplitud (Width)
Altura (Height)
Da el tamaño del objeto en píxeles.

Punto de Imagen X (ImagePointX)


Punto de Imagen Y (ImagePointY)
Da la posición de un punto de imagen de un objeto en las coordinadas del plano. Da tanto el nombre del
punto como su número.

X
Y
Da la posición del objeto en el plano, en píxeles. El origen (0,0) es la parte de arriba a la derecha del
plano y el eje Y se incrementa hacia abajo.

Tiempo (Time)
dt
Da el tiempo delta (delta-time) de acuerdo a la propia escala de tiempo del objeto. Ve a Delta-time and
framerate independence ⇗ para más información.

Orden Z (Z Order)
Nombre de capa (LayerName)
El nombre de la capa en la que el objeto está actualmente.

Número de capa (LayerNumber)


El índice basado en cero de la capa en la que el ejemplo está actualmente.

Índice Z (ZIndex)
Da el índice basado en 0 del orden Z de ese ejemplo dentro de la capa actual. 0 es el ejemplo de abajo,
incrementándose hasta el ejemplo de arriba.

6.2 AJAX
El plugin AJAX permite que se soliciten páginas web durante el juego. Su nombre se deriva de
“Asynchronous JavaScript and XML” una técnica usual en la mayoría de desarrolladores web. El objeto
AJAX se diseña para el uso de desarrolladores web ya familiarizados con la técnica - esta referencia no
describirá los principios de AJAX, solo mostrará cómo usarlo en C2 con el objeto AJAX. Normalmente,
usar el objeto AJAX también requiere scripts del lado del servidor personalizados (custom server-side
scripting) que están fuera del alcance de este manual.
Como hacer una solicitud
El uso básico del objeto AJAX consiste en:
1. Uso de la acción Solicitud (Request) para cargar la URL.
2. Un momento después de que la solicitud se complete, se detona Completado (On completed).
3. La expresión Último Dato (LastData) se puede usar para acceder al contenido de la respuesta.

La expresión del sistema tokenat puede ser útil para dividir respuestas simples. También puedes cargar
Último dato (LastData) en el plugin XML para leerlo en un documento XML.

Etiquetas (Tags)
Se puede crear una etiqueta diferente para cada solicitud. Es una secuencia simple que se usa para separar
solicitudes distintas. Por ejemplo, en el arranque quizás solicites ambos foo.php con la etiqueta “foo” y
bar.php con la etiqueta “bar”. Cuando se completa la primera solicitud, se detona “foo” completado (On
“foo” completed); cuando la segunda se completa, se detona “bar” completado (On “bar” completed).
Las solicitudes se pueden completar en distinto orden al que se realizaron, así que sin etiquetas sería
imposible decir cual se ha completado.

Hacer solicitudes AJAX entre dominios o en la vista previa


Por defecto, los navegadores bloquean las solicitudes AJAX entre dominios. Esto significa, por ejemplo,
que un juego en scirra.com puede solicitar otras páginas en scirra.com, pero no puede solicitar en
facebook.com. Esta es una característica de seguridad importante paras los navegadores (no es específica
de C2 o del objeto AJAX).

Además, cuando haces vista previa en C2 el juego funciona en localhost. Esto cuenta como un dominio
diferente para el resto de internet así que las solicitudes de AJAX a cualquier página fallarán, a menos
que el servidor permita específicamente solicitudes entre dominios.

Si quieres que las solicitudes de AJAX funcionen para cualquier dominio, o en la vista previa, puedes
configurarlo para enviar el siguiente encabezado HTTP:

Access-Control-Allow-Origin: *

Esto habilitará las solicitudes AJAX para cualquier dominio, pero debes tener en cuenta las implicaciones
de ello en tema de seguridad. Para más información ve a HTTP access control on MDN ⇗.

Condiciones de AJAX
Completado (On completed)
Detonado cuando la solicitud con la misma etiqueta se ha completado satisfactoriamente. La expresión
Último dato (LastData) contiene la respuesta.

Error (On error)


Detonado cuando la solicitud falla. Esto puede ser por numerosas razones, como que el servidor haya
caído o que se haya acabado el tiempo de la respuesta. (La expresión LastData no se ajusta puesto que no
hay respuesta.)

En progreso (On progress)


Para solicitudes de larga duración (descargar un archivo grande), esta condición se detona periódicamente
y actualiza el estado de la solicitud en la expresión Progreso (Progress). Es útil para crear barras de
progreso para las solicitudes AJAX.
Acciones de AJAX
Publicar en URL (Post on URL)
Envía una solicitud de PUBLICACIÓN (POST) a una URL y recupera la respuesta. Se da una etiqueta
que coincida con los detonadores Completado (On completed), En progreso (On progress) y Error (On
error). C2 no codifica en URL los datos del post - usa la expresión del sistema URLEncode para asegurar
que los datos están en el formato correcto para publicarlos.

Solicitud (Request)
Envía OBETENER respuesta para recuperar los contenidos de una URL. Se da una etiqueta que coincida
con los detonadores Completado (On completed), En progreso (On progress) y Error (On error).

Solicitud de archivo de proyecto (Request project file)


Solicita los contenidos de un archivo de proyecto. Se da una etiqueta que coincida con los detonadores
Completado (On completed), En progreso (On progress) y Error (On error).

Expresiones AJAX
Último Dato (LastData)
El contenido de la última respuesta. Se activa en el detonador Completado (On completed). Si se vuleve a
usar en un evento distinto, contendrá la respuesta de la última solicitud completada. La expresión del
sistema tokenat pude ser útil para dividir en respuestas simples.

Progreso (Progress)
Da el progreso de la solicitud AJAX en un evento En progreso (On progress). El progreso se representa
como un número de 0 a 1 (0,5 para la mitad completada).

6.3 appMobi
El plugin appMobi proporciona integración con el servicio de publicación móvil de appMobi ⇗. Para
más información ve al tutorial How to export to appMobi ⇗.

Condiciones de appMobi
Está en AppMobi (Is in AppMobi)
Verdadero si el juego está funcionando dentro de appMobi. Será falso si el juego está funcionando en otro
lugar, como en la web abierta (open web).

Almacenar habilitado (Caching enabled)


(Para usuarios avanzados) Verdadero si el servicio de almacenamiento de appMobi ha sido habilitado.

Cotejar orientación inicial (Compare initial orientation)


Comprueba si la orientación del dispositivo al inicio fue alguna particular.

Cotejar orientación (Compare orientation)


Comprueba si la orientación actual del dispositivo es alguna particular.

Impulsar habilitado (Push enabled)


(Para usuarios avanzados) Verdadero si el servicio de notificaciones de impulso (push notifications) de
appMobi están habilitadas.
Streaming habilitado (Streaming enabled)
(Para usuarios avanzados) Verdadero si el servicio de streaming de appMobi está habilitado.

Actualizaciones habilitadas (Updates enabled)


Verdadero si el servicio de actualizaciones en la nube (cloud update) está activado.

Tecla “atrás” presionada (On “back” button pressed)


Se detona cuando se presiona la tecla “atrás” del dispositivo, si la hay. Nota que algunos dispositivos
(como iOS) no la tienen. Antes de que este detonador funciones, debes añadir una página virtual usando
la acción Añadir página virtual (Add virtual page).

Código de barras escaneado (On barcode scanned)


Detonado cuando el dispositivo escanea un código de barras satisfactoriamente.

Datos remotos (On remote data)


Detonado cuando se reciben datos de la acción Obtener datos remotos (Get remote data).

Sitio remoto cerrado (On remote site closed)


Detonado cuando una ventana emergente del navegador que está mostrando contenido remoto es cerrada
por el usuario. Se abre con la acción Mostrar sitio remoto (Show remote site).

Acciones appMobi
Registrar evento (Log event)
Registra un evento con nombre para el servicio analítico de appMobi. Los parámetros se pueden
ser proporcionados en formato URL (foo=bar&baz=ban).

Añadir a almacenamiento de medios (Add to media cache)


Descarga un archivo desde Internet y lo almacena en un dispositivo de almacenamiento local, permitiendo
usar el juego offline en el futuro.

Borrar todas las cookies (Borrar todas las cookies)


Elimina todas las cookies guardadas con la acción del dispositivo Establecer cookie (Set cookie). (No
afecta a las cookies del navegador del usuario).

Borra almacenamiento de medios (Clear media cache)


Borra todos los archivos descargados con Añadir a almacenamiento de medios (Add to media cache).

Eliminar cookie (Remove cookie)


Elimina una cookie establecida con la acción Establecer cookie (Set cookie). (No afecta a las cookies del
navegador del usuario).

Establecer cookie (Set cookie)


Establece una cookie en el dispositivo. Ésta es un sustituto del almacenamiento local. No afecta al
navegador del usuario; el almacenamiento es sólo para la aplicación.

Cerrar sitio remoto (Close remote site)


Cierra un sitio remoto que está mostrándose con la acción Mostrar sitio remoto (Show remote site).

Conseguir datos remotos (Get remote data)


Crea el fondo de una solicitud AJAX usando el servicio appMobi. El detonador Datos remotos (On
remote data) se activará cuando se complete.

Instalar actualización (Install update)


Instala una actualización pendiente cuando esté preparada.

Lanzar a sitio externo (Launch external site)


Abre una URL en el navegador por defecto del dispositivo del usuario. El usuario dejará la app, no como
en la acción Mostrar sitio remoto (Show remote site).

Escanear código de barras (Scan barcode)


Abre un lector de códigos QR a pantalla completa. Se detonará Código de barras escaneado (On barcode
scanned) cuando se escanee satisfactoriamente.

Ajustar auto-rotar (Set auto-rotate)


Evita que un dispositivo rote automáticamente la pantalla cuando se cambia la orientación. Esto puede
forzar una orientación específica cuando lo usas con Ajustar orientación (Set orientation).

Mostrar sitio remoto (Show remote site)


Muestra una URL remota en el navegador de la aplicación. El usuario no sale de la app, puede darle al
botón de cerrar y volver a la app, no como en la acción Lanzar a sitio externo (Launch external site).
Actualizar conexión (Update connection)
Comprueba si el tipo de conexión del dispositivo ha cambiado (3G, Wifi, etc.).

Añadir página virtual (Add virtual page)


Úsalo para abrir una pantalla nueva que quieras que se pueda cerrar con la tecla “atrás”. La siguiente vez
que se presione tras esta acción evitará que la acción por defecto del dispositivo y detonará Tecla “atrás”
presionada (On “back” button pressed).

Eliminar página virtual (Remove virtual page)


Elimina la página añadida previamente, por ejemplo, si cancelas la pantalla.
Expresiones appMobi
Cookie
Da los datos almacenados por la acción Ajustar cookie (Set cookie).

Almacenamiento local URL (LocalMediaCacheURL)


Da el camino local para los archivos almacenados de Internet por la acción Añadir a almacenamiento de
medios (Add to media cache).

Versión AppMobi (AppMoviVersion)


Da la versión actual del software appMobi.

Datos del dispositivo Código de barras (DeviceBarcodeData)


Da los datos escaneados de un código de barras. Sólo aparece en Código de barras escaneado (On
barcode scanned) tras la acción Escanear código de barras (Scan barcode).

Conexión del dispositivo (DeviceConnection)


El tipo de conexión disponible más adecuado para el dispositivo: “wifi”, “cell” o “none”.

Modelo del dispositivo (DeviceModel)


El nombre del modelo del dispositivo.

Versión de SO del dispositivo (DeviceOSVersion)


Información de la versión de SO del dispositivo.

Plataforma del dispositivo (DevicePlatform)


“iOS” o “Android” dependiendo de cual esté usando.

Cadena de consulta del dispositivo (DeviceQueryString)


Da cualquier cadena de consulta que pasa a la aplicación cuando se inicia con un controlador de protocolo
(protocol handler).

Datos remotos del dispositivo (DeviceRemoteData)


Los datos dados por los detonadores Conseguir datos remotos (Get remote data) y Datos remotos (On
remote data).

Estado remoto del dispositivo (DeviceRemoteStatus)


Puede ser “abierto” (“open”), “cerrado” (“closed”) o “inactivo” (“idle”).

UUID del dispositivo (DeviceUUID)


Da el Identificador Universal Único (UUID), que es un código que identifica únicamente a ese
dispositivo.
Orientación inicial (InitialOrientation)
La orientación del dispositivo en el inicio, dado en grados (0, -90, 90 o 180).

Orientación (Orientation)
La orientación actual del dispositivo, dado en grados (0, -90, 90 o 180).
6.4 Matriz (Array)
El objeto Matriz almacena listas de valores (cifras o texto). Es análogo a las matrices en los lenguajes de
programación tradicionales.

Sobre las Matrices


La matriz tiene 3 dimensiones. Por ejemplo, una lista simple de diez valores sería una matriz de 10 x 1 x
1. Nota que no debes usar el valor 0 en ninguna dimensión porque la matriz entera quedará vacía; hay que
usar 1 para dimensiones no usadas.

Cada elemento de la matriz puede almacenar una cifra o texto. La cifra o el texto se pueden cambiar con
las acciones de Ajuste (Set) y se puede acceder a ellas con la expresión En (At). Por ejemplo, una matriz
de 10 x 10 x 1 es igual a una cuadrícula 2D con un total de 100 valores. Se puede almacenar un número
en la posición (3,7) con la acción Ajustar en XY (Set at XY), y se puede acceder mediante Matriz.En(3,7)
(Array.At(3,7)). Nota que, al igual que el resto de C2, los índices comienzan en 0, así que el primer
elemento será 0. En este ejemplo, Matriz.En(0,0) (Array.At(0,0)) dará el primer número de la cuadrícula.

La matriz puede almacenar tanto cifras como texto con cualquiera de sus elementos. Incluso se pueden
mezclar números y letras dentro de ella.

Las matrices no cambian su tamaño automáticamente. Si accedes a un valor fuera de la matriz, te dará el
número 0. Si ajustas un valor fuera de ella, no tendrá efecto.

Manipular matrices
Una matriz de una dimensión, de tamaño N x 1 x1, funciona como una lista simple de valores N. Las
acciones de la categoría Manipular (como Push (Insertar), Pop (Quitar)) permiten que las matrices de
una dimensión se usen como otras estructuras de datos. (Estas acciones funcionan con matrices
multidimensionales pero están hechas específicamente para las de una sola).

Por ejemplo, el siguiente esquema usa una fila (último en entrar, primero en salir o “LIFO”):
 Añade nuevos ítems con Insertar al frente (Push front).
 Recupera el siguiente valor con Matriz.AlFinal (Array.Back).
 Elimina el valor recuperado con Quitar al final (Pop back).

El siguiente esquema usa una pila (primero en entrar, primero en salir o “FIFO”)
 Añade nuevos ítems con Insertar al final (Push back).
 Recupera el siguiente valor con Matriz.AlFinal (Array.Back).
 Elimina el valor recuperado con Quitar al final (Pop back).

Propiedades de Matriz
Amplitud (dimension X) (Width (X dimension))
Altura (dimension Y) (Height (Y dimension))
Profundidad (dimensión Z) (Depth (Z dimension))
El tamaño de la matriz. Si quieres que sea de 1 dimensión (una lista de valores) usa A x 1 x 1. Si quieres
que sea de 2 (una cuadrícula de valores) usa A x B x 1.
Condiciones de Matriz
Cotejar en X (Compare at X)
Cotejar en XY (Compare at XY)
Cotejar en XYZ (Compare at XYZ)
Coteja un valor en una posición de la matriz. Los índices están basados en 0. Todos los valores fuera de la
matriz dan 0. Si se usa Cotejar en X (Compare at X) los índices de Y y Z serán 0. Si se usa Cotejar en XY
(Compare at XY) el índice Z será 0.

Para cada elemento (For each element)


Una condición de repetición que funciona una vez para cada elemento de la matriz. Esto, por lo tanto,
funciona anchura x altura x profundidad veces.

Cotejar valor actual (Compare current value)


Sólo válido para el bucle Para cada elemento (For each element), ya sea como la condición siguiente a
ella como un sub-evento.

Contiene valor (Contains value)


Busca en la matriz entera para comprobar si alguno de los elementos contiene el valor dado. Por ejemplo,
puedes usarlo para comprobar que la secuencia “espada” (“sword”) está almacenada en alguna parte de
la matriz.

Esta vacia (Is empty)


Comprueba si la matriz está vacía. Estará vacía cuando el número total de sus elementos sea 0, calculado
como anchura x altura x profundidad. Por ello, la matriz estará vacía si cualquiera de sus ejes mide 0. Es
útil cuando usas matrices como estructura de datos (cuando insertas y quitas valores).

Acciones de Matriz
Borrar (Clear)
Pone a 0 todos los elementos de la matriz.

Ajustar en X (Set at X)
Ajustar en XY (Set at XY)
Ajustar en XYZ (Set at XYZ)
Escribe un valor en una posición en la matriz. Los índices están basados en 0. Escribir valores fuera de la
matriz no tendrá efecto. Si se usa Ajustar en X (Set at X) los índices de Y y Z serán 0. Si se usa Ajustar en
XY (Set at XY) el índice Z será 0.

Ajustar tamaño (Set size)


Ajusta las dimensiones de la matriz. Los valores se guardan, pero si la nueva matriz es más pequeña se
truncan. Si la nueva matriz es más grande, los elementos nuevos almacenarán el valor 0. Si alguna de las
dimensiones es 0 la matriz completa quedará vacía, así que deben ser al menos 1.

Descargar (Download)
Abre una nueva pestaña en el navegador con un enlace de descarga del contenido de la matriz como un
archivo en formato JSON. Se usa para desarrollo offline (como crear editores de nivel). Ya que funciona
abriendo una pestaña nueva, puede no aparecer si tienes activado el bloqueo de ventanas emergentes -
asegúrate de que el localhost permite estas ventanas para que la acción funcione.
Cargar (Load)
Carga los contenidos de la matriz de una secuencia en formato JSON. Debe recuperarse de la acción
Descargar (Download) o de la expresión AsJSON. También se puede recuperar del objeto AJAX.

Insertar (Push)
Añade un nuevo valor al principio (al frente) o al final de un eje. Ya que la matriz es un cubo de valores
en 3D, técnicamente esto insertará un nuevo plano de elementos 2D con los valores dados. Pero en
matrices de 1 dimensión esto añade un único elemento, y en una de 2 dimensiones insertará una fila de
elementos.

Quitar (Pop)
Borra el valor al principio (al frente) o al final de un eje. Ya que la matriz es un cubo de valores en 3D,
técnicamente esto quitará un nuevo plano de elementos 2D con los valores dados. Pero en matrices de 1
dimensión esto quita un único elemento, y en una de 2 dimensiones quitará una fila de elementos.

Introducir (Insert)
Inserta un nuevo valor en un índice específico de un eje. Ya que la matriz es un cubo de valores en 3D,
técnicamente esto insertará un nuevo plano de elementos 2D con los valores dados. Pero en matrices de 1
dimensión esto añade un único elemento, y en una de 2 dimensiones insertará una fila de elementos.

Borrar (Delete)
Borra el valor en un índice específico de un eje. Ya que la matriz es un cubo de valores en 3D,
técnicamente esto quitará un nuevo plano de elementos 2D con los valores dados. Pero en matrices de 1
dimensión esto quita un único elemento, y en una de 2 dimensiones quitará una fila de elementos.

Invertir (Reverse)
Invierte el orden de elementos en un eje. Nota que en matrices multidimensionales solo invierte un eje.
Por ejemplo, en el eje X de una matriz 2D se invertirá el orden de las columnas guardando el contenido de
cada una de ellas.

Sort (Ordenar)
Ordena el orden de los elementos de un eje en sentido ascendente. Nota que en matrices
multidimensionales se ordena desde el primer elemento del eje. Por ejemplo, en el eje X de una matriz 2D
se clasificará el orden de columnas basándose en los elementos de la coordenada Y, guardando el
contenido de cada columna.

Expresiones de Matriz
En (X) (At(X))
En (X, Y) (At(X, Y))
En (X, Y, Z) (At(X, Y, Z))
Recupera el valor de una posición en la matriz. Los índices están basados en 0. Los valores de fuera de la
matriz serán 0. Si no se dan los índices Y o Z se usará el 0.

CurX
CurY
CurZ
El índice basado en 0 actual de cada dimensión en un bucle Para cada elemento (For each element).
Valor actual (CurValue)
El valor actual en el bucle Para cada elemento (For each element). Esto es un acceso directo para
Array.At(Array.CurX, Array.CurY, Array.CurZ).

Amplitud (Width)
Altura (Height)
Profundidad (Depth)
Da el tamaño de cada dimensión de la matriz.

Al frente (Front)
Acceso directo para acceder al primer valor de la matriz, que es lo mismo que At(0, 0, 0).

Al final (Back)
Acceso directo para acceder al último valor del eje X, que es lo mismo que At(Self.Width - 1, 0, 0).

Índice de (IndexOf)
Último Índice de (LastIndexOf)
Busca en el eje X de la matriz un valor dado y da el índice en el que se encuentra, o -1 si no se encuentra.
IndexOf encuentra en primer elemento que coincide y LastIndexOf en último que coincide.

AsJSON
Da el contenido de la matriz como una secuencia en formato JSON. Esto puede cargarse luego en la
matriz con la acción Cargar (Load).

6.5 Audio
El objeto Audio reproduce archives de audio que has importado al proyecto. Debe insertarse a todos los
proyectos que necesiten reproducción de audio. Se importan haciendo clic con el botón derecho en las
carpetas de Sonido o Música en la Barra del Proyecto y seleccionando Importar… (Import…), lo que
hace que aparezca el Diálogo de importar audio. Ve a las secciones relacionadas con la importación de
archivos de audio para más información.

Actualmente, el soporte de audio en los navegadores es irregular. No todas las características funcionaran
en todos los navegadores. Por ejemplo, ajustar la tasa de playback no funcionará en muchos dispositivos
móviles. Esto es un problema del navegador y no del objeto Audio de C2. Se recomienda probar tu
proyecto en varios navegadores para identificar que características funcionan en cada navegador. Sin
embargo, este área está en pleno desarrollo para futuros navegadores y el problema podría resolverse
pronto.

Categorizar correctamente los archives de audio


Es importante organizar los archivos de audio apropiadamente, ya que los archivos en la carpeta Sonidos
se descargan completamente antes de reproducirse, pero los de la carpeta Música se reproducen en
streaming. Esto significa que si una pista de música acaba en la carpeta de Sonidos tendrá que descargarse
completamente (lo que podría tardar varios minutos) antes de reproducirse. Sin embargo, audio en la
carpeta de Música empezará la reproducción inmediatamente desde el servidor.

El Audio se descarga según demanda


Para agilizar el tiempo de carga y comenzar el juego lo antes posible, el audio se descarga o se reproduce
según la demanda durante el juego. En otras palabras, nada se descarga hasta que la acción Reproducir
(Play) se activa. Entonces, si el audio está en la carpeta de Música se reproducirá desde el servidor; y si
está en la de Sonidos empezará a descargarse y se reproducirá al terminar la descarga. Esto ayuda a
preservar ancho de banda en el servidor, ya que no se descarga audio innecesario. Sin embargo, puede
haber un retraso antes de que el audio se reproduzca la primera vez. El retraso de la primera vez es único,
porque después el sonido ya estará descargado y se reproducirá inmediatamente el resto de las veces.

Puedes usar también la acción Precargar (Preload) para descargar antes el audio sin necesidad de
reproducirlo en ese momento. Esto se puede hacer en el Inicio del Plano (Start of layout) para empezar a
descargar unos pocos efectos de sonido importantes para que no haya retraso en la primera reproducción.
Sin embargo esto es opcional (todos los juegos funcionan sin Precargado) y no debe usarse demasiado
pues puede ralentizar la descarga del resto y encontrarte con un tiempo sin ningún efecto de sonido.

Etiquetas de Audio
Algunas acciones afectan a parámetros de audio como el volumen al reproducirse. Sin embargo, puede
haber varios sonidos sonando a la vez. Para identificar a qué sonido quieres que afecte, se reproducen con
una etiqueta asociada. Es una secuencia que identifica al sonido. Por ejemplo, el sonido del arma del
jugador se reproducirá con la etiqueta “ArmaJugador” (“PlayerWeapon”) y la de su enemigo con “Arma
Enemigo” (“EnemyWeapon”). Entonces, la etiqueta puede usarse en la acción Ajustar Volumen (Set
Volume) para especificar a qué sonido quieres ajustar el volumen. Las etiquetas no diferencian
mayúsculas y minúsculas.

Varios sonidos pueden reproducirse a la vez usando la misma etiqueta. En este caso, las acciones como
Volumen (Set Volume) afectaran a todos los sonidos con esa etiqueta.

Una etiqueta con una secuencia vacía (“”) tiene un significado especial: se refiere sólo al último sonido
reproducido con la acción Reproducir (Play). Es útil para reproducir un sonido inmediatamente después
de ajustarlo.

Propiedades de audio
Escala de tiempo de audio (Timescale audio)
La escala de tiempo puede usarse para acelerar o ralentizar la reproducción, para algunos efectos como
cámara lenta. Ve a Delta-time and framerate independence ⇗ para más información. Esta propiedad
controla si la escala de tiempo afecta al audio.
Off reproducirá el audio sin tener en cuenta la escala de tiempo.
On (sounds only) reproducirá el audio de la carpeta Sonidos a una tasa distinta dependiendo de la escala
de tiempo, pero lo hará de la carpeta de Música sin tenerla en cuenta.
On (sounds and music) reproducirá el audio de ambas carpetas a una tasa distinta dependiendo de la
escala de tiempo.
Algunos navegadores pueden no soportar las escalas de tiempo de audio; prueba en varios navegadores.
Además, diferentes navegadores pueden usar distintos algoritmos de tiempo de audio. También puede
alterar el tono, tomando tonos más bajos para escalas más bajas, lo que puede sonar como una cinta de
casete a velocidades distintas; también puede cambiar la velocidad sin afectar el tono. Prueba en varios
navegadores para establecer el efecto deseado.

Condiciones de Audio
Finalizado (On ended)
Detonado cuando un sonido con cierta etiqueta finaliza su reproducción. No se detona para sonidos en
bucle.
Precargas completas (Preloads complete)
Ya que el audio se descarga de acuerdo a la demanda, los archivos sólo se descargan cuando se usan las
acciones Precargar (Preload) o Reproducir (Play). Esta condición será verdadera cuando todos los
audios hayan descargado lo suficiente para reproducirse hasta el final. Se puede usar para precargar
ciertos sonidos en el plano inicial e ir al siguiente cuando hayan terminado, eliminando los retrasos de la
primera reproducción.

Acciones de Audio
Reproducir (Play)
Reproducir (por nombre) (Play (by name))
Reproduce un archivo de audio con cierta etiqueta. La segunda acción te da la oportunidad de usar una
expresión para el nombre del archivo de audio. Se pude establecer que se haga una reproducción en bucle.

Precargar (Preload)
Precargar (por nombre) (Preload (by name))
Empieza a descargar el archivo de audio par que no haya retrasos al reproducirlo. Mira la sección El
Audio se descarga según demanda para más información. No es necesario precargar los archivos para que
se reproduzcan - sólo sirve para reducir la posibilidad de retraso en la primera reproducción. Sólo se
deben precargar dos o tres sonidos de una vez.

Establecer bucle (Set looping)


Establece que un sonido se reproduzca en bucle (repitiéndose cuando acabe) o no (para cuando acaba).
No todos los navegadores soportan esta característica; prueba en varios de ellos.

Enmudecer (Set muted)


Establece si un sonido es audible o no.

Ajustar tasa de reproducción (Set playback rate)


Cambia la tasa a la que se reproduce el sonido. Diferentes navegadores pueden usar diferentes algoritmos
de tiempo (alternado o no el tono) o pueden no soportar la opción; prueba en varios navegadores para
conseguir el efecto deseado. Si la propiedad Escala de tiempo de audio (Timescale audio) está habilitada,
combina con la tasa de reproducción establecida para esta acción.

Silenciar (Set silent)


Habilita, deshabilita o alterna el Modo silencio (Silent mode). En este modo los sonidos reproducidos son
mudos y no se sonarán. Es útil para crear rápidamente una alternación de audio en un título de pantalla.

Ajustar volumen (Set volume)


Cambia el volumen de un sonido. El volumen viene dado en decibelios (dB). El volumen de 0 dB es el
origen, se amplifica a partir de ahí y por debajo de 0 dB se atenúa. Por ejemplo, introduciendo un valor de
-10 hará el sonido 10 unidades más flojo (aproximadamente la mitad de fuerte).

Parar (Stop)
Para un sonido reproduciéndose inmediatamente.

Expresiones de Audio
El objeto Audio no tiene expresiones.
6.6 Browser
El objeto Navegador accede a las características del navegador web que ejecuta el juego HTML5.
También cambia el modo a pantalla completa, detecta si el juego tiene actualizaciones y determina si la
página es visible.

A veces, las limitaciones de seguridad evitan acciones de Navegador. Por ejemplo, la acción de la ventana
Cerrar (Close) sólo se puede usar cuando la ventana se crea con javascript window.open.

Condiciones de Navegador
Cookies habilitadas (Cookies enabled)
Verdadero si el usuario tiene habilitadas las cookies del navegador. (Normalmente es raro que estén
deshabilitadas ya que muchas páginas web funcionan con ellas).

Está en línea (Is online)


Verdadero si el navegador tiene activa una conexión a internet. Los juegos de C2 pueden funcionar
offline - para más información ve a Offline games ⇗.

Cambio de tamaño (On resized)


Detonado cuando la ventana del navegador que muestra el juego cambia de tamaño. Esto incluye el
cambio de orientación del dispositivo. La expresión del sistema Amplitud de Ventana (WindowWidth) y
Altura de Ventana (WindowHeight) se actualizarán para reflejar el nuevo tamaño si se usa el modo
pantalla completa.

Tiene conexión (On went online)


No tiene conexión (On went offline)
Detonado si la conexión a internet está disponible o no durante el juego. Es común en dispositivos
móviles que pueden moverse a zonas donde no llegue la señal. La condición Está en línea (Is online)
también cambia para reflejar el estado de la conexión.

Tecla menú (On menu button)


Sólo disponible cuando exportas a PhoneGap.
Detonado cuan el usuario presiona la tecla “Menú” del dispositivo. Nota que todos los dispositivos no
tienen esta tecla, como iOS, que solo tiene la tecla “Home”.

Tecla buscar (On search button)


Sólo disponible cuando exportas a PhoneGap.
Detonado cuan el usuario presiona la tecla “Buscar” del dispositivo. Nota que todos los dispositivos no
tienen esta tecla, como iOS, que solo tiene la tecla “Home”.

Está descargando una actualización (Is downloading update)


Verdadero si el juego está funcionando con lo almacenado, pero descargando y actualizando la versión al
mismo tiempo. Se puede usar un auto-actualizador. Para más información ve a Offline games ⇗.

Actualización descargada (On update ready)


Detonado cuando un juego está funcionando con lo almacenado, pero una versión actualizada ha
terminado su descarga. Si el usuario todavía está en el menú del juego o en la página de créditos quizás
quieras preguntar al usuario si quiere recargar la página para cargar la nueva versión (o simplemente
hacerlo automáticamente). Para más información ve a Offline games ⇗.
Está en pantalla completa (Is fullscreen)
Verdadero si el navegador está en modo pantalla completa.

Página visible (Page is visible)


Verdadero si la página en la que el juego HTML5 está funcionando está visible actualmente. La página
cuenta como escondida si la ventana está minimizada, si está en una pestaña distinta a la que se está
viendo o, en un dispositivo móvil, cuando la página está en segundo plano. Cuando es así la página se
pausa automáticamente.

Suspendido (On suspended)


Reanudado (On resumed)
Detonado cuando la visibilidad de la página cambia o cuando, en un dispositivo móvil, la página está en
segundo plano o en primero. Cuando es invisible la aplicación se suspende: todos los eventos se paran y
los sonidos se silencian.

Acciones de Navegador
Ir atrás (Go back)
Ir adelante (Go forward)
Se mueve por el historial de navegación como si clicaras en los botones Atrás y Adelante del navegador.

Ir al inicio (Go home)


Va a la página de inicio del navegador.

Ir a la URL (Go to URL)


Va a una URL dada. Nota que usa la misma ventana/pestaña en la que se está mostrando el juego, así que
esta acción finalizará el juego.

Abrir URL en una ventana nueva (Open URL in new window)


Va a una URL dada en una nueva ventana (o pestaña, según la configuración del navegador). El juego
continua en la ventana/pestaña anterior.

Recargar (Reload)
Fuerza que la página se recargue. El juego se reinicia.

Alerta (Alert)
Hace que surja un mensaje de “alerta” en un cuadro.

Desenfocar (Blur)
Desenfoca la ventana del navegador.

Cancelar pantalla completa (Cancel fullscreen)


Vuelve al modo pantalla normal si el navegador está en pantalla completa.

Cerrar (Close)
Cierra la ventana actual si el script da permiso para ello.

Enfocar (Focus)
Enfoca la ventana del navegador.
Solicitar pantalla completa (Request fullscreen)
Solicita que el navegador entre en el modo pantalla completa. Nota que el navegador puede ignorar la
solicitud a menos que la acción la haga el usuario con un clic del ratón, presionando una tecla o tocando
algo en la pantalla. Hay tres modos de pantalla completa:
Centro (Center) - centra la pantalla completa en la ventana del juego.
Estirar (Stretch) (crop) - extiende la ventana del juego para que ocupe la ventana completa.
Estirar (Stretch) (scale) - escala (hace zoom) en la ventana del juego para que ocupe la ventana completa.
Las dos últimas opciones corresponden a la propiedad del proyecto Pantalla completa en el navegador
(Fullscreen in browser). Para más información ver supporting multiple screen sizes ⇗.

Expresiones de Navegador
Idioma (Language)
Da el idioma configurado en el navegador. Ejemplo, en-US.

Nombre (Name)
Da el nombre que el navegador se da a sí mismo. Este puede ser inexacto por razones de compatibilidad
anteriores, como Google Chrome que se llama Netscape.

Plataforma (Platform)
Da la plataforma en la que el navegador se ejecuta, como Win32 para Windows.

Producto (Product)
Da el nombre del producto del navegador. Este puede ser inexacto por razones de compatibilidad
anteriores, como Google Chrome, cuyo producto se llama Gecko.

Agente de usuario (UserAgent)


Da la secuencia completa del agente de usuario para el navegador, por ejemplo Mozilla/5.0 (Windows NT
6.1; WOW64) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.63.

Vendedor (Vendor)
Da el vendedor del navegador, como Google Inc. para Google Chrome.

Versión (Version)
Da la versión actual del navegador como una secuencia. Puede ser simplemente un subtexto en la
secuencia del agente de usuario.

Título (Title)
El título del documento HTML actual.

Dominio (Domain)
El dominio actual, como scirra.com.

Almohadilla (Hash)
La secuencia tras la almohadilla al final de la URL, incluyendo la almohadilla. Por ejemplo, si la URL es
http://scirra.com/mygame/index.html#teapot, esto da #teapot.

Nombre de Trayectoria (PathName)


La trayectoria relativa al dominio de la URL. El nombre de la trayectoria para
http://scirra.com/mygame/index.html#teapot sería /mygame/index.html.
Protocolo (Protocol)
El protocolo actual, normalmente http: o https:.

Parámetro de pregunta (QueryParam)


Da un parámetro de secuencia de pregunta por el nombre. Por ejemplo, si la URL termina con
index.html?foo=bar&baz=wan, QueryParam("foo") da bar y QueryParam("baz") da wan.

Secuencia de pregunta (QueryString)


Da la secuencia de pregunta completa de la URL incluyendoel símbolo de interrogación. Por ejemplo, si
la URL termina con index.html?foo=bar&baz=wan, da ?foo=bar&baz=wan.

Referencia (Referrer)
Da la página anterior que enlaza a la actual, si la hay.

URL
Da la URL actual completa en la barra de direcciones del navegador, incluyendo el protocolo.
6.7 Botón (Button)
El objeto Botón crea un botón que el usuario puede clicar para realizar una acción.

Los controles de formulario son elementos HTML que flotan sobre el lienzo del juego en la
página HTML. Por lo tanto, no se puede mostrar nada por encima de un control, aparte de otros
controles.

Los controles se posicionan ellos solos de acuerdo al paralaje de la capa, su escala y otros. Sin
embargo, no están realmente en el juego (ya que flotan encima) por lo que se recomiendo evitar
el uso de desplazamientos, paralaje y escalas, de otra forma no quedaría natural.

Estilo de Botón
Los botones se pueden personalizar de un gran número de formas usando CSS (Hojas de estilo
en cascada). En vez de tener muchas acciones para ajustar todas las posibles propiedades, tiene
una sola acción Ajustar estilo CSS (Set CSS style). CSS ahorra trabajo, es sencillo para usar con
propiedades simples. Aquí algunos ejemplos:

Hacer el texto rojo (Make the text red): Ajusta el "color" a "rojo".
Hacer el fondo amarillo (Make the background yellow): Ajusta el "color del fondo" a "amarillo".
Hacer el borde gris claro y fino (Make the border a thick light grey: Ajusta el "borde" a "3px
solid #AAAAAA".
Hacer la letra más grande (Make the font bigger): Ajusta el "tamaño de letra" a "2em".
Hacer un borde rojo y discontinuo (Make a dashed red border): Ajusta el "borde" a "2px dashed
red".

Propiedades de Botón
Texto (Text)
El texto que aparecerá en el botón.

Consejo de Herramienta (Tooltip)


Aparece en la mayoría de los navegadores si el usuario pasa el ratón por encima de una herramienta y
para. Déjalo en blanco si no quieres poner ningún consejo.
Visibilidad Inicial (Initial Visibility)
Si el botón se muestra o no en el inicio. Si es Invisible el botón aparecerá con la acción Hacer visible (Set
visible).

Habilitado (Enabled)
Si el botón está habilitado en el inicio. Si No, el botón estará deshabilitado y no podrá pulsarse.

Tamaño de letra automático (Auto font size)


Ajusta la propiedad de tamaño de letra automáticamente de acuerdo a la escala del plano y la capa. Esto
evitará que tengas que usar manualmente la propiedad de tamaño de letra de CSS. Establece No si quieres
usar los estilos de CSS para ajustar la letra.

ID (Opcional)
Una id adicional para el elemento en el DOM (Modelo de Objetos del Documento). Puede ser útil para
acceder al valor del elemento desde scripts externos, o dar estilo con CSS en la página HTML.

Condiciones de Botón
Clicado (on clicked)
Detonado cuando el usuario presiona el botón, con el teclado, ratón o tocándolo.

Acciones de Botón
Ajustar estilo CSS (Set CSS style)
Ajusta un estilo CSS (Hojas de estilo en cascada) en el elemento Botón. Para más información ver la
sección anterior Estilo de Botón. Nota que si la propiedad Tamaño de letra automático (Auto font size)
está activada, cualquier cambio a la propiedad tamaño de letra se sobrescribirá.

Habilitar (Set enabled)


Habilita o deshabilita el botón. Cuando está deshabilitado no puede ser pulsado.

Enfocar (Set focused)


Enfoca el botón.

Ajustar texto (Set text)


Ajusta el texto del botón.

Ajustar consejo de herramienta (Set tooltip)


Ajusta el texto que aparece en el consejo. Déjalo en blanco si no quieres que haya consejo.

Expresiones de Botón
El objeto Botón no tiene expresiones.

6.8 Diccionario (Dictionary)


El objeto Diccionario almacena secuencias y números. Cada valor tiene asociada una clave, que es una
secuencia. Es un objeto de almacenamiento de datos – no hace ninguna corrección ortográfica ni por
características especiales del idioma.

Los nombres clave en Diccionario distinguen siempre entre mayúsculas y minúsculas. Esto significa que
“SCORE” se considera diferente a “score”.
Ejemplo
Suponemos que el número 100 se almacena con la clave “puntuación” (“score”) y la secuencia “Joe” se
almacena con la clave “nombre” (“name”). El resultado del almacenaje sería así:
“name”: “Joe”
“score”: 100
Reuperar la clave “nombre” con Dictionary.Get("name") dará “Joe”, y recuperar “puntuación” dará 100.
Al ajustar “puntuación” a 50 cambiará el valor de la clave.

Esto es como almacenar datos en variables de ejemplo o en variables de evento, pero ya que puedes usar
secuencias como claves puedes almacenar cualquier número de valores.

Condiciones de Diccionario
Cotejar valor (Compare value)
Coteja el valor almacenado para una clave.

Tiene clave (Has key)


Comprueba si hay alguna clave almacenada

Está vacía (Is empty)


Verdadero cuando no hay claves almacenadas.

Para cada clave (For each key)


Repite el evento una vez para cada clave almacenada. Las expresiones Clave actual (CurrentKey) y Valor
actual (CurrentValue) dan las claves respectivas.

Cotejar valor actual (Compare current value)


Sólo válido en un evento Para cada clave (For each key). Coteja el valor de la clave actual.
Acciones de Diccionario
Añadir clave (Add key)
Añade una nueva clave para almacenar, con un valor dado. Si la clave ya existe el valor se actualiza.

Borrar (Clear)
Elimina todas las claves almacenadas, haciendo que el objeto quede vacío.

Eliminar clave (Delete key)


Elimina una clave y su valor almacenado. Si la clave no existe no tiene efecto.

Establecer clave (Set key)


Actualiza el valor de una clave que ya existe. Si la clave no existe no tiene efecto. (No como Añadir clave
(Add key), con esta acción no se creará).

Descargar (Download) (JSON)


Abre una nueva pestaña del navegador con un enlace para descargar los contenidos de Diccionario en
formato JSON. Sólo sirve para desarrollo. Quizás te aparezca una ventana emergente con un aviso.

Cargar (Load) (JSON)


Carga todas las claves y valores de datos JSON previamente recuperados del objeto Diccionario usando la
acción Descargar (Download) o la expresión AsJSON.

Expresiones de Diccionario
Conseguir (Get)
Da el valor almacenado de una clave, Dictionary.Get("score"). Si la clave no existe da 0.

Contador de Clave (KeyCount)


Da el número de claves almacenadas.

Clave actual (CurrentKey)


Valor actual (CurrentValue)
En el evento Para cada clave (For each key), esto da la clave y su valor (respectivamente) de la clave
actual que está siendo repetida.

AsJSON
Da los contenidos del objeto Diccionario en formato JSON. Puede ser cargado más tarde con la acción
Cargar (Load), enviada a un servidor mediante AJAX, guardada en un disco, etc.

6.9 Facebook
El objeto Facebook (FB de ahora en adelante) te permite integrar tu juego con FB. El tutorial How to
make a Facebook game ⇗ trata sobre como publicar juegos en FB y tiene una guía paso a paso para usar
el objeto Facebook. Esta sección del manual simplemente describe sus características.

El objeto FB se pude usar en cualquier juego, no solo para juegos de FB. Puedes tener tu juego
funcionando en tu propio servidor. El objeto te permitirá conectar con la cuenta de FB del usuario incluso
cuando este esté jugando en tu web. Sin embargo, es necesario conectar la aplicación con FB para guardar
la ID de la aplicación. Se pueden conectar a FB mediante Facebook Developers ⇗.
El objeto FB hace solicitudes asíncronas. Esto significa que el juego sigue funcionando mientras
operaciones que pueden durar varios segundos (como enviar una puntuación) se completan. Por ello, el
objeto funciona con una acción que activa una tarea (como Publicar puntuación (Publish scoore)), que, al
completarse, detona una condición (como Puntuación enviada (On score submitted)). Esto tardará unos
segundos mientras el juego sigue funcionando, en vez de congelarlo y esperar a que se completen las
acciones. Como muchas solicitudes asíncronas, las acciones pueden completarse en un orden distinto del
que fueron hechas.

Propiedades de Facebook
ID de la aplicación (App ID)
La ID dada a la aplicación en la sección de Programadores de FB (FB Developers).

Aplicación Secreta (App Secret)


Sólo necesario si piensas usar Puntuaciones API (Scores API). Si no, no uses esta propiedad. La
aplicación secreta se puede encontrar en los Programadores de FB y es necesaria para habilitar las
Puntuaciones API (Scores API).

Condiciones de Facebook
Está preparado (Is ready)
Verdadero si el objeto FB está preparado para usarse. Cuando es Falso es que todavía está cargando los
scripts necesarios.

Usuario ha iniciado sesión (Is user logged in)


Verdadero si el usuario ha iniciado sesión en su cuenta de FB.

Nombre disponible (On name available)


Detonado inmediatamente tras Usuario ha iniciado sesión (Is user logged in) cuando la expresión que
obtiene el nombre de usuario está disponible.

Usuario registrado (On user logged in)


Detonado cuando el usuario ha iniciado sesión satisfactoriamente. También se detona al principio si el
usuario ha iniciado sesión anteriormente y vuelve a la aplicación con la contraseña recordada. Además, se
detona al principio de cada plano mientras el usuario siga registrado.

Usuario ha cerrado sesión (On user logged out)


Detonado si el usuario cierra sesión durante el juego.

Puntuación alta (On hi-score)


Detonado una vez por cada puntuación alta conseguida tras la acción Solicitar tabla de puntuaciones altas
(Request hi-score board). Las expresiones Nombre (HiscoreName), Posición (HiscoreRank) y
Puntuación (Score) contienen la información.

Puntuación enviada (On score submitted)


Detonado cuando la acción Publicar puntuación (Publish score) se ha completado satisfactoriamente.
Puntuación más alta del usuario disponible (On user top score available)
Detonado cuando la acción Solicitar puntuación más alta del usuario (Request user top score) se ha
completado satisfactoriamente. La expresión Puntuación (Score) tiene esta puntuación.

Acciones de Facebook
Iniciar sesión (Log in)
Abre una ventana emergente pidiendo al usuario que se registre. Esto sólo se activa por voluntad del
usuario, como presionar una tecla, hacer clic o tocar la pantalla. El usuario puede cancelar el registro por
lo que esto no está garantizado su éxito. Se pueden pedir dos permisos: publicar automáticamente
(permitiendo que las publicaciones automáticas en el muro del usuario) y publicar puntuaciones
(permitiendo el uso del sistema de puntuaciones altas). Puedes pedir al usuario escribir en el muro
mediante un diálogo sin tener que pedir permiso cada vez - hacerlo siempre automáticamente. No pidas
permisos que tu aplicación no necesite.

Cerrar sesión (Log out)


Cierra la sesión el usuario de FB.

Pedir compartir enlace (Prompt to share link)


Abre un diálogo pidiendo al usuario que comparta la URL que tú quieras en su muro. Se pueden usar
descripciones o imágenes opcionalmente. No requiere permisos, pero los usuarios pueden cancelar la
acción.

Pedir compartir la aplicación (Prompt to share this app)


Abre un diálogo pidiendo al usuario que comparta la URL de la aplicación en su muro. Se pueden usar
descripciones o imágenes opcionalmente. No requiere permisos, pero los usuarios pueden cancelar la
acción.

Pedir escribir en el muro (Prompt wall post)


Abre un diálogo pidiendo al usuario escribir en su muro. No se añadirá contenido ni enlaces - sólo un
cuadro de texto vacío para que el usuario escriba lo que quiera. No requiere permisos, pero los usuarios
pueden cancelar la acción.

Publicar enlace (Publish link)


Publica de forma automática una URL en el muro del usuario sin preguntárselo. Se pueden usar
descripciones o imágenes opcionalmente. Requiere que el usuario haya aceptado Publicar
automáticamente (Publish to stream).

Publicar en el muro (Publish wall post)


Publica de forma automática un mensaje en el muro del usuario sin preguntárselo. Requiere que el usuario
haya aceptado Publicar automáticamente (Publish to stream).

Publicar puntuación (Publish score)


Publica una puntuación numérica en la tabla de puntuaciones altas del juego. Requiere que el usuario
haya aceptado Publicar puntuaciones (Publish scores). Cuando la acción se completa se detona
Puntuación enviada (On score submitted).

Solicitar tabla de puntuaciones altas (Request hi-score board)


Solicita las puntuaciones altas del juego. Requiere que el usuario haya aceptado Publicar puntuaciones
(Publish scores). Esta acción detonará Puntuación alta (On hi-score) una vez por cada puntuación que
aparezca en la tabla. Es de tu elección elegir la manera de mostrar estas puntuaciones; una forma sencilla
es anexando cada puntuación a un objeto de texto.

Solicitar la puntuación más alta del usuario (Request user top score)
Solicita la puntuación más alta del jugador hasta el momento en el juego. Requiere que el usuario haya
aceptado Publicar puntuaciones (Publish scores). Cuando se completa la acción se detona Puntuación
más alta del usuario disponible (On user top score available).

Expresiones de Facebook
Nombre (FirstName)
El nombre actual del usuario. Sólo se ajusta tras la detonación de Nombre disponible (On name
available).

Nombre completo (FullName)


El nombre completo actual del usuario. Sólo se ajusta tras la detonación de Nombre disponible (On name
available).

Apellidos (LastName)
Los apellidos actuales del usuario. Sólo se ajusta tras la detonación de Nombre disponible (On name
available).

ID de usuario (UserID)
La ID actual del usuario, que se usa para distinguir diferentes usuarios con el mismo nombre.
Sólo se ajusta después de que el usuario se haya registrado.

Nombre para Puntuación alta (HiscoreName)


El nombre en la tabla de Puntuaciones Altas. Se ajusta en el evento Puntuación Alta (On hi-score).

Posición en Puntuaciones Altas (HiscoreRank)


La posición actual en la tabla de Puntuaciones Altas, desde 1 hacia abajo. Se ajusta en el evento
Puntuación Alta (On hi-score).

ID de usuario en Puntuaciones Altas (HiscoreUserID)


Da la ID actual del usuario en la tabla de Puntuaciones Altas. Es único aunque dos personas en la
tabla tengan el mismo nombre.

Puntuación (Score)
La puntuación más alta actual en el evento Puntuación Alta (On hi-score) o la puntuación actual del
usuario en Puntuación más alta del usuario disponible (On user top score available).

6.10 Mando (Gamepad)


El objeto Mando te permite detectar la entrada de un mando de consola, teclado de PC o joystick. Si bien
debe funcionar con varios dispositivos, está diseñado para funcionar mejor con mandos de la XBox 360 o
los diseñados de forma similar (con los mismos botones).

Desafortunadamente, si un dispositivo es válido o no depende de muchos factores, incluyendo el sistema


operativo, los drivers disponibles y el soporte del navegador. Esto hace difícil saber de antemano si un
dispositivo específico funcionará. Los mandos de la XBox 360 funcionan con un sistema Windows y con
el navegador Google Chrome. Los de la Playstation 3 no funcionan sin instalar ciertos drivers. Por esta
razón se recomienda la primera opción siempre habilitando un método alternativo como el teclado.
La mayoría de los dispositivos móviles no tienen una toma física para conectar un controlador. Por ello,
normalmente sólo se habilita el uso de mandos en ordenadores de mesa. Para móviles con pantalla táctil,
céntrate en el diseño de controles táctiles touch controls ⇗.

Para evitar que las páginas web hagan un seguimiento a través de tus controladores disponibles, la
mayoría de los navegadores que los soportan dirán que no hay controladores conectados hasta que se
pulse un botón de uno de los dispositivos.

Asignación de teclas (Key mapping)


Diferentes controladores tienen distintas disposiciones de los botones, o estos tienen distintos nombres.
Por ejemplo, los de la Playstation 3 usan cuadrado, círculo, triángulo y X mientras que los de la XBox
360 usan A, B, X e Y (La X aparece en distinto lugar en ambos controladores). El objeto Mando se refiere
al controlador de la XBox 360 únicamente.

El objeto Mando también asignará otros botones al diseño del controlador de la XBox 360 para asegurar
que el mismo botón detone siempre el mismo evento. Sin embargo no es práctico ajustar esto para cada
dispositivo, así que algunos botones pueden detonar distintos eventos. Por ello es por lo que se
recomiendan los controladores de la XBox 360. Si estás interesado en usar otros asegúrate de probarlos.

Las entradas en bruto se obtienen, evitando la asignación de teclas, usando la expresión En bruto (Raw).

Controlar comportamientos con Mando


Para controlar comportamientos con entradas de Mando, usa la acción Control Simulado (Simulate
control). Abajo se muestra un ejemplo de cómo controlar el comportamiento Plataforma con el stick
izquierdo y el botón A para saltar.

Para más información, ver la sección Controles personalizados en la Referencia de Comportamientos.

Varios Mandos
Varios Mandos se pueden conectar a un solo ordenador. Para diferenciar entre ellos, la mayoría de las
acciones, condiciones y expresiones de este objeto toman unos parámetros. Es un índice basado en 0 del
controlador. Por ejemplo, 0 identifica al primer controlador, 1 al segundo y así sucesivamente. Esto te
permite jugar en multijugador.

Propiedades de Mando
Zona sin cobertura analógica (Analog deadzone)
Los dispositivos con joysticks analógicos son extremadamente sensibles. Esto te permite controlar los
juegos de forma precisa, pero el joystick registrará también un leve movimiento cuando no se toque. Si no
se ignoraran ciertos valores, el jugador controlado por el usuario se movería de forma incorrecta cuando
este no tocara el joystick. Para resolver el problema los valores por debajo de cierto límite se ignoran. El
movimiento del joystick tiene un rango de -100 a 100 en cada eje, y si la magnitud está por debajo del
valor Zona sin cobertura analógica (Analog deadzone) dará 0. Por ejemplo, por defecto es 25, así que
valores desde -25 a 25 contarán como 0. Se recomienda este valor para asegurar que no haya
movimientos no intencionados.

Condiciones de Mando
Cotejar ejes (Compare axis)
Coteja la posición de un joystick analógico en un mando específico. Los valores dentro de la Zona sin
cobertura analógica (Analog deadzone) dan 0. El rango de valores de los ejes es de -100 a 100.

Tiene Mandos (Has gamepads)


Verdadero si hay algún mando conectado y activado. Para evitar que sitios web te controlen en base a los
mandos que tengas, la mayoría de los navegadores no envían los datos del controlador hasta que se pulsa
un botón.

Botón presionado (Is button down)


Verdadero si un botón se presiona en un mando específico. Los botones se denominan de acuerdo a los
controladores de la XBox 360, y se pueden asignar como se explica en Asignación de Teclas.

Mando conectado (On gamepad connected)


Detonado cuando un dispositivo de mando se conecta al ordenador. Para evitar que sitios web te controlen
en base a los mandos que tengas, la mayoría de los navegadores no envían los datos del controlador hasta
que se pulsa un botón, cuando también funcionará esta condición.

Mando desconectado (On gamepad disconnected)


Detonado cuando un dispositivo de mando se desconecta del ordenador, como quitándole el cable.

Acciones de Mando
El objeto Mando no tiene acciones.

Expresiones de Mando
Eje (Mando, Índice) (Axis(Gamepad, Index))
Recupera la posición actual de un joystick analógico. Índice (Index) especifica a la izquierda y a la
derecha en los ejes X e Y, de acuerdo a la Asignación de Teclas. EL rango de valores de los ejes va desde
-100 a 100. Los valores dentro de la Zona sin cobertura analógica (Analog deadzone) dan 0.

Botón (Mando, índice) (Button (Gamepad, Index))


Recupera el valor al pulsar un botón. Índice (Index) especifica el índice basado en 0 del botón en el menú
desplegable de la condición Botón presionado (Is button down) (0 da el valor para el botón A). El valor
dado depende de las características del botón: si el botón es sensible a la presión, puede dar valores entre
0 y 100, de otra forma dará 0 para no presionado y 100 para presionado. Los botones que no son sensibles
a la presión son más fáciles de detectar usando la condición Botón presionado (Is button down).

Cantidad de Mandos (GamepadCount)


Da el número de mandos conectados y activados. Para evitar que sitios web te controlen en base a los
mandos que tengas, la mayoría de los navegadores no envían los datos del controlador hasta que se pulsa
un botón.

ID de Mando (Mando) (GamepadID (Gamepad))


Una secuencia que representa el modelo y la manufactura de un mando específico, por ejemplo “XBox
360 controller”. Sin embargo, en la práctica varía de acuerdo al sistema y al navegador usado.
Eje en bruto (Mando, Índice) (RawAxis(Gamepad, Index))
Recupera la entrada en bruto del eje. Da el valor sin asignar la tecla o aplicar la zona sin cobertura. El
rango de valores del eje será de -100 a 100.

Cuenta de Eje en bruto (Mando) (RawAxisCount(Gamepad))


Da el número de ejes disponible en la entrada en bruto. Da el valor sin asignar teclas.

Botón en bruto (Mando, Índice) (RawButton (Gamepad, Index))


Recupera la entrada del botón en bruto para un mando y un índice específico. Da el valor sin asignar
teclas.

Cuenta de Botón en Bruto (Mando) (RawButtonCount(Gamepad))


Da el número de botones disponibles en la entrada en bruto. Da el valor sin asignar teclas.

6.11 Teclado (Keyboard)


El objeto Teclado permite que el objeto responda a entradas del teclado.

Nota que hoy en día es ingenuo asumir que todos los usuarios tendrán teclado. Muchos ahora manejan las
redes con pantallas táctiles. (Este objeto no responde a teclados en pantalla u otras formas de pantalla
táctil). Por ello, si tu juego usa exclusivamente el ratón o el teclado, es imposible que se use en
dispositivos táctiles. Mira el tutorial Touch controls ⇗ para ver un sistema de control alternativo.

Accesos directos del navegador


En algunos navegadores, algunas teclas son accesos directos para acciones del navegador. Por
ejemplo, la barra espaciadora desplaza la página hacia abajo. Si hay algún evento para “Tecla
pulsada” (“On key pressed”) según una tecla dada, C2 bloqueará la acción normal del navegador,
Por ejemplo, si quieres evitar que la barra espaciadora desplace la página hacia abajo, deja vacío
el evento “Tecla pulsada” (“On key pressed”).

Condiciones del Teclado


La Tecla está presionada (Key is down)
Verdadero si una tecla está siendo presionada.

Cualquier tecla presionada (On any key pressed)


Detonado cuando cualquier tecla del teclado está presionada. Útil para la pantalla de títulos o
para escenas de corte.

Tecla presionada (On key pressed)


Detonado cuando una tecla específica se está presionando.

Tecla soltada (On key released)


Detonado cuando una tecla específica se suelta.

Acciones de Teclado
El objeto Teclado no tiene acciones.
Expresiones de Teclado
El objeto Teclado no tiene expresiones.

6.12 Ratón (Mouse)


El objeto Ratón permite que el proyecto responda a entradas del ratón.

Nota que hoy en día es ingenuo asumir que todos los usuarios tendrán teclado. Muchos ahora manejan las
redes con pantallas táctiles. (Este objeto no responde a teclados en pantalla u otras formas de pantalla
táctil). Por ello, si tu juego usa exclusivamente el ratón o el teclado, es imposible que se use en
dispositivos táctiles. Mira el tutorial Touch controls ⇗ para ver un sistema de control alternativo.

Si sólo usas el botón izquierdo, considera usar el objeto Táctil (Touch) con el Uso de entrada de Ratón
(Use Mouse Input) en Sí. Esto permitirá que tu juego funcione en dispositivos táctiles sin tener que hacer
muchos cambios.

Seleccionar elementos en la página


Por defecto el navegador selecciona elementos en la página web cuando el usuario clica y arrastra. C2
bloquea el lienzo para que el juego no se vea afectado por clicados y arrastrados rápidos. Sin embargo, si
tu juego está incrustado dentro de otra página, el usuario pude seleccionar elementos de otra página por
accidente. Puedes añadir el siguiente atributo a cualquier elemento HTML para evitar que se pueda
seleccionar:
onselectstart="return false;"

Puedes añadirlo a la etiqueta <cuerpo> (<body>) para evitar selecciones en toda la página, pero te
advertimos que puede causar dificultades a los usuarios si hay algo que éste quiera seleccionar.

Condiciones de Ratón
El cursor está sobre el objeto (Cursor is over object)
Verdadero si el cursor del ratón está sobre algo.

El Botón del Ratón está pulsado (Mouse button is down)


Verdadero si un botón dado (izuqierdo, derecho o centro) están siendo pulsados.

En cualquier clic (On any click)


Detonado cuando cualquier botón del ratón está pulsado. Útil para la pantalla de títulos y escenas de
corte.

Botón soltado (On button released)


Detonado cuando un botón del ratón dada se suelta.

Clicado (On click)


Detonado cuando un botón dado está presionado. Se puede usar para detectar dobles clics.

Rueda del Ratón (On mouse wheel)


Detonado cuando la ruleta del ratón (si la hay) se desliza arriba o abajo. Nota: añadir este detonador en
cualquier parte de tu juego evitará que la rueda se deslice en el navegador, así que úsalo con cuidado.
Objeto clicado (On object clicked)
Detonado cuando un botón dado se presiona mientras en cursor está sobre un objeto. Se puede usar para
detectar dobles clics en objetos.

Acciones de Ratón
Ajustar cursor de un Sprite
Ajusta el cursor de la imagen de un objeto Sprite. Esto es preferible a ajustar las coordinadas del ratón,
puesto que el retardo de la entrada es bastante más bajo. Se aplican varias limitaciones: se usa la imagen
que aparece en el editor, sin tener en cuenta el tamaño o la rotación en le plano; la imagen no puede ser
demasiado grande (el límite suele ser 64x64); y el soporte varía dependiendo del navegador y el SO.

Ajustar estilo de cursor (Set cursor style)


Ajusta el tipo de cursor que se muestra en el lienzo de la página HTML. Se puede ocultar completamente
eligiendo None.

Expresiones de Ratón
X absoluta (AbsoluteX)
Y absoluta (AbsoluteY)
Da la posición del cursor del ratón sobre el lienzo. Es (0,0) en la parte de arriba a la izquierda y crece de
acuerdo al tamaño de la ventana. No se ve afectado por ningún desplazamiento o escala en el juego.

X
Y
Da la posición del cursor en coordinadas. Es (0,0) en la parte de arriba a la izquierda. Cambia según
desplazamientos y escalas. Sin embargo, si una capa individual se ha desplazado, escalado o rotado, no se
tiene en cuenta en la expresión - para ese caso, usa las versiones de capa de abajo.

X (“capa”) (X("layer"))
Y (“capa”) (Y("layer"))
Da la posición del cursor en coordinadas, con desplazamientos, escalas y rotaciones teniendo en cuenta la
capa dada. La capa se puede identificar por una secuencia de su nombre o por el índice basado en 0
(Ratón.X(0) ((Mouse.X(0))).

6.13 Partículas (Particles)


El objeto Partículas puede crear efectos visuales de forma rápida, creando y moviendo muchas imágenes
pequeñas de forma independiente. Es un objeto versátil capaz de muchos tipos de efectos. Hay 6 demos
en la carpeta de ejemplos de C2, que incluyen desde fuego a fuentes. La imagen abajo muestra un
ejemplo de efecto de partículas:
El objeto Partículas tiene varios parámetros para cambiar el comportamiento de cada partícula. Además,
requiere el uso de una textura para dibujar cada partícula. Normalmente un simple punto balnco sobre un
fondo negro es suficiente.

El Modo de Fusión aditivo (Additive blend mode) funciona especialmente bien con este objeto. Hace
que cada partícula ilumine el fondo en vez de pegarse sobre él y permite que se fundan unas con otras en
vez de solaparse. Hace que parezcan fuentes de luz. La imagen siguiente muestra el efecto cuando la
textura es un punto blanco en un fondo negro.

Los efectos de colores se crean usando partículas de colores. Nota que ya que el efecto Aditivo ilumina el
fondo, cualquier objeto que use este efecto no se verá en un fondo blanco. Funciona mejor en fondos
oscuros.

Para más información sobre modos de fusión y efectos, ve a la sección Efectos de este manual.

Partículas en la Vista de Plano


El objeto se representa en la Vista de Plano con dos líneas rojas que representan el cono de pulverización
(spray cone) (que es el ángulo en el que se expanden las partículas), con la textura de partícula en el
centro. El origen del objeto es donde se crean las partículas. Abajo se muestra un ejemplo con el efecto
que se mostraría durante la ejecución.

El tamaño del objeto partículas en el plano no es importante. Se reajustará él mismo en tiempo de


ejecución para encajar todas las partículas creadas.

Cómo funcionan los efectos de partículas


Los efectos de partículas funcionan de forma similar a usar el comportamiento Bala en cada partícula. Las
partículas iniciales se disparan a una velocidad y ángulo dado en el cono de pulverización (spray cone).
Cada partícula se controla individualmente alterando su velocidad, ángulo, opacidad y tamaño durante el
tiempo que aparecen. El moverse de forma independiente es lo que hace interesante el efecto visual. Las
propiedades del objeto controlan como cambian las partículas y que alteraciones aleatorias se hacen. Vale
la pena pasar algún tiempo cambiando los parámetros para ver el efecto que tienen.

Hay tres ajustes diferentes para hacer que las partículas se destruyan, dadas por la propiedad Modo de
destrucción (Destroy mode). La que se aplica por defecto Desvanecerse hasta invisible (Fade to
invisible) disminuye la opacidad de cada partícula hasta 0 durante el Tiempo de espera (Timeout)
destruyendo la partícula cuando es invisible. Tiempo de espera acabado (Timeout expired) simplemente
destruye la partícula tras un tiempo, sin cambiar su opacidad. Partícula parada (Particle stopped) destruirá
la partícula cuando su velocidad sea 0, ¡pero debes tener cuidado de asegurar que la partícula decelere
hasta llegar a valores negativos ya que si no no se destruirá nunca!

Optimización
Los efectos de partículas son más eficientes que crear el efecto con objetos Sprite, pero no a gran escala.
Lo mismo que con los sprites, debes tener cuidado de no crear un gran número de partículas, ya que el
rendimiento bajaría, especialmente en móviles. Usa la expresión Contador de partículas
(ParticleCount) para saber cuántas has creado. En móviles, el uso de este objeto no está recomendado ya
que la tasa de frames es muy limitada; pero si es necesario, mantén el número por debajo de 50.

Para reducir mantener a raya el contador de partículas, intenta reducir la tasa o acortar el tiempo de
espera. Para compensar, puedes intentar hacer la partícula más grande para que el efecto no se quede muy
vacío.

Propiedades de Partícula
El objeto Partículas tienes bastantes propiedades, que están divididas en tres grupos: Propiedades del
espray de partículas (relativas al propio objeto Partículas), Propiedades de las partículas iniciales
(relativas a la creación de cada partícula de forma individual) y las Propiedades de la duración de la
partícula (relativas a cómo se comportan las partículas tras su creación).

Propiedades del espray de partículas


Tasa (Rate)
El número de partículas creadas por segundo. Si el Tipo es Caso único (One-shot) será cuantas partículas
se han creado en total. Nota que el modo Espray continuo (Continuous spray) el número total de
partículas puede ser mayor que la tasa, ya que depende de otras propiedades.

Cono de pulverización (Spray cone)


El número de grados en que las partículas son pulverizadas. Se representa con líneas rojas en la
Vista de Plano. Usa 360 para pulverizarlas en todas las direcciones.

Tipo (Type)
Las partículas pueden funcionar de dos modos:
Espray continuo (Continuous spray) creará un espray constante (por defecto).
Caso único (One-shot) creará una única explosió de partículas, el número total ajustado en la Tasa. Una
vez han sido todas destruidas, el propio objeto se destruye. Es útil para efectos como explosiones o
impactos.

Imagen (Image)
Clica para abrir el editor de imágenes y editar la partícula. Prueba un punto en un fondo transparente o en
un fondo negro con el efecto Aditivo.
Propiedades de las partículas iniciales
Velocidad (Speed)
La velocidad inicial a la que se dispara cada partícula, en píxeles por segundo.

Tamaño (Size)
El tamaño inicial de cada partícula, en píxeles. Las partículas se muestran siempre como cuadrados.

Opacidad (Opacity)
La opacidad inicial de cada partícula, desde 0 (transparente) a 100 (opaca).

Tasa de crecimiento (Grow rate)


La tasa de crecimiento inicial (cambio de tamaño a través del tiempo) de cada partícula, en píxeles por
segundo. 0 significa que la partícula mantendrá siempre su tamaño. Un valor positivo hará que crezca y
uno negativo que decrezca.

Randomizador X (X randomizer)
Randomizador Y (Y randomiser)
El desplazamiento inicial de la partícula. Puedes hacer que sigan una línea o una caja con estas
propiedades.

Randomizador de velocidad (Speed randomiser)


Un ajuste al azar de la velocidad inicial de cada partícula. Por ejemplo, un valor 100 cambiará la
velocidad inicial de cada partícula hasta 50 píxeles por segundo más rápida o más lenta.

Randomizador de tamaño (Size randomiser)


Un ajuste al azar del tamaño inicial de cada partícula. Por ejemplo, un valor 20 cambiará el tamaño inicial
de cada partícula hasta 10 píxeles más grande o más pequeño.

Randomizador de tasa de crecimiento (Grow rate randomiser)


Un ajuste al azar de la tasa de crecimiento inicial de cada partícula. Por ejemplo, un valor 10 cambiará la
tasa de crecimiento inicial de cada partícula hasta 5 píxeles por segundo mayor o menor.

Propiedades de la duración de la partícula


Aceleración (Acceleration)
Cambia la velocidad de la partícula a través del tiempo, en píxeles por segundo por segundo. Un valor
positivo hará que las partículas aceleren y uno negativo que deceleren.

Gravedad (Gravity)
La aceleración hacia abajo causada por la gravedad, en píxeles por segundo por segundo. Útil para hacer
efecto fuente o similares. Establece 0 para evitar que la gravedad tenga efecto en el movimiento de la
partícula.

Randomizador de ángulo (Angle randomiser)


Máximo cambio al azar del ángulo de cada partícula durante su vida, en grados por segundo. Por ejemplo,
establece 0 para evitar que cambien de dirección o 10 para permitir que cambien 5 grados por segundo a
la derecha o a la izquierda.
Randomizador de velocidad (Speed randomiser)
Máximo cambio al azar de la velocidad de cada partícula durante su vida, en píxeles por segundo por
segundo. Por ejemplo, establece 0 para evitar que cambien la velocidad o 100 para permitir que aceleren o
deceleren 50 píxeles por segundo por segundo.

Randomizador de opacidad (Opacity randomiser)


Máximo cambio al azar de la opacidad de cada partícula durante su vida. Útil para crear efectos
“titilantes”.

Modo de destrucción (Destroy mode)


Cómo se destruye cada partícula. Hay tres modos:
Desvanecer hasta invisible (Fade to invisible) disminuirá la opacidad de cada partícula hasta 0 durante el
tiempo de espera (timeout). Cuando sean invisibles se destruirán.
Tiempo de espera acabado simplemente destruye la partícula al finalizar el tiempo de espera (timeout),
sin cambiar su opacidad.
Partícula parada (Particle stopped) destruirá la partícula cuando su velocidad sea 0, ¡pero debes asegurar
que la partícula use una Aceleración negativa ya que si no no se destruirá nunca!

Tiempo de espera (Timeout)


El tiempo en segundos que la partícula dura hasta que se destruye, dependiendo del Modo de destrucción
(Destroy mode).

Condiciones, acciones y expresiones de Partículas


La mayoría de las acciones o expresiones de este objeto simplemente ajustan o dan las propiedades de
arriba. Mira la sección propiedades para más información. Las otras condiciones, acciones y expresiones
se describen a continuación.

Para características comunes a otros objetos ve a Características Comunes.

Condiciones de Partículas
Está pulverizando (Is spraying)
Verdadero si el espray está habilitado.

Acciones de Partículas
Ajustar pulverización (Set spraying)
Habilita o deshabilita el espray, cuando está en modo Espray continuo (Continuous spray). Cuando está
deshabilitado no se crean nuevas partículas.

Expresiones de Partículas
Contador de partículas (ParticleCount)
El número de partículas actual que tiene el objeto Partículas. Es importante para asegurar que no creas
demasiadas para el buen funcionamiento del juego; ve a la sección Optimización. Nota que debido a
cómo funcionan las expresiones en C2, si tienes varios ejemplos del objeto, esto solo dará el número de
partículas de un ejemplo - usa Para Cada bucle (For Each loop) para contar varios ejemplos.
6.14 Sprite
El objeto Sprite es una imagen inimitable que aparece en el juego. Es uno de los objetos más importante
en la mayoría de los juegos de C2. Se usa para hacer elementos más visuales, como el jugador, los
enemigos, proyectiles, explosiones y escenarios sin mosaico (los escenarios de mosaicos es mejor
hacerlos con el objeto Fondo Adosado (Tiled Background)).

Si un Sprite tiene una animación sencilla con un solo frame, simplemente mostrará una imagen sin
animar. Sin embargo, se pueden añadir animaciones más complejas al objeto con el Editor de imágenes y
animaciones.

Todos los ejemplos de este objeto comparten la animación. En otras palabras, un único conjunto de
imágenes conforman una animación que pertenece al tipo de objeto, los ejemplos son referencias a este
objeto.

Se pueden aplicar efectos a los Sprites. Para más información ver Efectos.

Propiedades de Sprite
Animaciones (Animations)
Clica el enlace Editar (Edit) para abrir el Editor de imágenes y animaciones. Todos los ejemplos del tipo
de objeto compartirán esta animación.
Tamaño (Size)
Clica el enlace Hacer 1:1 (make 1:1) para ajustar la selección a tamaño real (100%). Esto hace que la
altura y la anchura del objeto sea la misma que las del primer frame de la animación.

Visibilidad inicial (Initial visibility)


Ajusta si el objeto se muestra (visible) o está escondido (invisible) cuando comienza el plano.

Frame inicial (Initial Frame)


Muestra el primer frame de la animación. Usa un índice basado en cero, así que el primero será el 0.
Puede ser útil para almacenar diferentes partes de un mosaico o escenario en diferentes frames de la
animación de un único tipo de Sprite.

Condiciones de Sprite
Para condiciones comunes a varios objetos, ver Condiciones Comunes.

Cotejar frame (Compare frame)


Coteja el número del frame actual, que tiene un índice basado en cero (el primer frame es 0).

Está volteado (Is flipped)


Está espejado (Is mirrored)
Verdadero si el objeto ha sido volteado o espejado con las acciones Voltear (Set flipped) y Espejar (Set
mirrored).
Está reproduciéndose (Is playing)
Verdadero si una animación dada funciona en ese momento. Las animaciones se identifican por
su nombre (sin diferenciar mayúsculas y minúsculas).

Cualquiera terminada (On any finished)


Detonado cuando cualquier animación termina. Si estableces un bucle no terminarán.

Terminada (On finished)


Detonado cuando una animación dada termina. Si estableces un bucle no terminarán. Las animaciones se
identifican por su nombre (sin diferenciar mayúsculas y minúsculas).

Frame cambiado (On frame changed)


Detonado si la animación cambia a otro frame mientras la animación se está reproduciendo.

Se está solapando con otro objeto (Is overlapping another object)


Se está solapando en el desplazamiento (Is overlapping at offset)
Verdadero si cualquier ejemplo está solapándose con cualquier ejemplo de otro objeto. Se tienen en
cuenta los polígonos de colisión, además del tamaño y la rotación del objeto. La variante
“desplazamiento” comprobará los posibles solapamientos cuando se dé el desplazamiento. Por ejemplo,
en una prueba de superposición en un de desplazamiento (100, 0) el objeto se moverá temporalmente a la
derecha 100 píxeles, probará la superposición y volverá atrás de nuevo.

Colisionando con otro objeto (On collision with another object)


Detonado la primera vez que cualquier ejemplo se solapa con cualquier ejemplo de otro objeto. El
polígono de colisión se tiene en cuenta para ello, además del tamaño y la rotación del objeto.

Imagen URL cargada (On image URL loaded)


Detonado cuando Cargar imagen de una URL (Load image from URL) termina su descarga de la imagen
y ésta está lista para mostrarse.
Acciones de Sprite
Para acciones comunes a varios objetos, ver Acciones Comunes.

Ajustar animación (Set animation)


Cambia la animación que se está reproduciendo a otra. Las animaciones se identifican por su nombre (que
no distingue mayúsculas y minúsculas). La nueva animación puede empezar desde el principio o desde el
mismo frame en el que se quedó la imagen anterior (frame actual (current frame)).

Voltear (Set flipped)


Ajusta si el objeto aparece volteado verticalmente o normal. Esto también afecta a los puntos de la
imagen en el polígono de colisión.

Espejar (Set mirrored)


Ajusta si el objeto aparece espejada horizontalmente o normal. Es útil para juegos de plataforma. Espejar
también afecta a los puntos de la imagen en el polígono de colisión.

Ajustar frame (Set frame)


Ajusta el número de frame de la animación siguiendo el índice basado en 0. La animación continuará
reproduciéndose de igual forma.

Ajustar velocidad (Set speed)


Ajusta la tasa de reproducción de la animación actual, en frames por segundo. Los ejemplos pueden tener
distintas velocidades de animación.

Empezar (Start)
Si la animación actual se para, esto hará que se reproduzca de nuevo desde el frame en el que se
quedó (current frame) o desde el principio.

Parar (Stop)
Detiene la animación. El objeto dejará de mostrar el frame actual.

Generar otro objeto (Spawn another object)


Crea un nuevo ejemplo del tipo de objeto. El nuevo ejemplo se crea en la misma posición y ángulo que el
objeto actual. Puede estar en cualquier capa (elegida por su nombre o por su índice basado en 0). Si se
crea una familia, un tipo de objeto al azar se recogerá en la familia.

Escalar (Set scale)


Ajusta la altura y la anchura a un múltiplo del tamaño actual del objeto, similar a hacer zoom de
forma proporcional. Por ejemplo, si el objeto es 50x100 Escalar a 2 (Set scale to 2) lo convertirá
en 100x200 y Escalar a 0,1 (Set scale to 0,1) lo convertirá en 5x10.

Cargar imagen de una URL (Load image from URL)


Carga una imagen de una URL dada. El frame actual de la animación se sustituirá por esa imagen. No se
muestra hasta que la imagen se ha terminado de cargar, cuando se detona Imagen URL Cargada (On
image URL loaded). Las imágenes cargadas de diferentes dominios están sujetas a las restricciones entre
dominios de las solicitudes AJAX – para más información ve a la sección del objeto AJAX. Los datos de
URI se pueden pasar a imagen, de una captura de pantalla o desde la webcam. El parámetro Tamaño
(Size) ajusta si el objeto Sprite se ajustará al tamaño de la imagen cuando se cargue o si mantiene su
tamaño original y se estrecha la imagen.
Expresiones de Sprite
Para expresiones comunes a varios objetos, ver Expresiones Comunes.
Frame de animación (AnimationFrame)
El número de índice basado en cero del frame actual.

Contador de frames (AnimationFrameCount)


El número de frames que contiene la animación actual.

Nombre de Animación (AnimationName)


Una secuencia que contiene el nombre de la animación actual.

Velocidad de Animación (AnimationSpeed)


La tasa de reproducción de la animación actual, en frames por segundo.

Anchura de la imagen (ImageWidth)


Altura de la imagen (ImageHeight)
Las dimensiones originales del objeto (el tamaño del frame de la animación actual) en píxeles. Ya que el
objeto puede estrecharse en tiempo de ejecución cambiando los valores Anchura (Width) y Altura
(Height), esto se puede usar para saber el tamaño original sin tener en cuenta el nuevo tamaño.

6.15 Texto (Text)


El objeto Texto puede mostrar texto en el juego usando fuentes. Nota que no hay muchas fuentes
comunes a todos los ordenadores - mira this page ⇗ para ver algunas fuentes comunes a todas las
webs. El objeto soporta estas Fuentes de Web usando la acción Ajustar fuente de web (Set web
font). Para más información mira el tutorial Using Web Fonts in the Text object ⇗.

El objeto Texto no muestra nada si el rectángulo de texto es demasiado pequeño para que quepa
una sola letra. Si el texto desaparece prueba a agrandar el rectángulo.

Renderizar texto
Diferentes navegadores renderizan el texto de distintas formas, y la Vista de Plano de C2 también lo hace
distinto a los navegadores. Esto significa que debes esperar que la apariencia del texto sea algo distinta
cuando se juega en distintos navegadores.

Debes probar tu juego en varios de ellos para asegurarte que el texto se ve como tú pretendías. Para más
información ve a la sección Buenas prácticas.

Fuentes no soportadas en el editor


Por razones técnicas, algunas fuentes no son compatibles con C2. Sólo afecta la editor y no tiene por qué
significar que no se vaya a ver en algún navegador - asegúrate de probar todos los navegadores. Para
garantizar que la fuente que utilizas es visible para todos, se recomienda usar las Fuentes de Web.
Propiedades de Texto
Texto (Text)
El texto que mostrará el objeto.

Initial visibility (Visibilidad inicial)


Si el objeto se muestra (visible) o se esconde (invisible) cuando comienza el plano.

Fuente (Font)
La fuente en la que el objeto muestra el texto. Clica el botón a la derecha del nombre de fuente
“…” para abrir un diálogo y seleccionar la fuente. Las fuentes elegidas deben estar instaladas en
el ordenador del usuario para que se muestren correctamente. Por esta razón se recomienda usar
Fuentes de Web en vez de elegir fuentes poco comunes.

Color
Elige el color del texto.

Alineamiento horizontal (Horizontal alignment)


Elige si el texto se muestra alineado a la izquierda, centrado o a la derecha dentro del rectángulo de texto.

Origen (Hotspot)
Elige si el origen del objeto estará en la parte de arriba a la izquierda del rectángulo de texto (por
defecto) o centrado (centered). Esto sólo es importante si se quiere rotar el texto.

Ajustar (Wrapping)
Elige como se ajusta el texto al final de la línea. Palabra (Word) ajustará palabras enteras separadas por
espacios o guiones. Carácter (Character) se cambiará a la siguiente línea en cualquier carácter, lo que
podría partir palabras en Idiomas Occidentales, pero que es útil en idiomas como el chino.

Interlineado (Line height)


Cantidad de espacio entre una línea y otra del texto, en píxeles. Usa 0 para que sea por defecto, -5 para 5
píxeles menos que el defecto, 10 para 10 píxeles más que el defecto y así sucesivamente.

Condiciones de Texto
Para condiciones comunes a otros objetos ve a Condiciones comunes.

Cotejar texto (Compare text)


Comprueba si el objeto está mostrando cierta secuencia de texto. Puede diferenciar mayúsculas
de minúsculas (“TEXT” sería distinto de “text”) o no (“TEXT” sería lo mismo que “text”). Para
comprobar que el objeto no está mostrado cierto texto invierte la condición.

Acciones de Texto
Para acciones comunes a otros objetos ve a Acciones comunes.

Ajustar color de fuente (Set font color)


Ajusta el color del texto. Usa expresiones como rgb(red, green, blue).
Ajustar fuente (Set font face)
Cambia la fuente en la que se muestra el texto. Las fuentes elegidas deben estar instaladas en el ordenador
del usuario para que se muestren correctamente. Por esta razón se recomienda usar Fuentes de Web en
vez de elegir fuentes poco comunes.

Ajustar tamaño de fuente (Set font size)


Ajusta el tamaño del texto en puntos (pt).

Ajustar fuente de web (Set web font)


Establece una fuente de web cargada online. Para más información ve al tutorial Using Web Fonts in the
Text object ⇗.

Texto apéndice (Append text)


Añade texto al final del texto actual. Por ejemplo si el objeto contiene Hola y tiene Mundo como
apéndice, el objeto de texto contendrá entonces HolaMundo.

Ajustar texto (Set text)


Establece que el objeto de texto se está mostrando en ese momento. Usa el operador & para combinar
texto y números. Para más información ve a Expresiones.

Expresiones de Texto
Para expresiones comunes a otros objetos ve a Expresiones comunes.

Texto (Text)
Da la secuencia que contiene el objeto de texto actual.

Anchura de Texto (TextWidth)


Altura de Texto (TextHeight)
Da el tamaño del contenido actual dentro del rectángulo de texto.

6.16 Cuadro de texto (Textbox)


El objeto Cuadro de Texto crea un campo de texto en el que el usuario puede escribir.

Los controles de formulario son elementos HTML que flotan sobre el lienzo del juego en la
página HTML. Por lo tanto, no se puede mostrar nada por encima de un control, aparte de otros
controles.

Los controles se posicionan ellos solos de acuerdo al paralaje de la capa, su escala y otros. Sin
embargo, no están realmente en el juego (ya que flotan encima) por lo que se recomiendo evitar
el uso de desplazamientos, paralaje y escalas, de otra forma no quedaría natural.

Estilo de Cuadro de Texto


Los botones se pueden personalizar de un gran número de formas usando CSS (Hojas de estilo
en cascada). En vez de tener muchas acciones para ajustar todas las posibles propiedades, tiene
una sola acción Ajustar estilo CSS (Set CSS style). CSS ahorra trabajo, es sencillo para usar con
propiedades simples. Aquí algunos ejemplos:

Hacer el texto rojo (Make the text red): Ajusta el "color" a "rojo".
Hacer el fondo amarillo (Make the background yellow): Ajusta el "color del fondo" a "amarillo".
Hacer el borde gris claro y fino (Make the border a thick light grey: Ajusta el "borde" a "3px
solid #AAAAAA".
Hacer la letra más grande (Make the font bigger): Ajusta el "tamaño de letra" a "2em".
Hacer un borde rojo y discontinuo (Make a dashed red border): Ajusta el "borde" a "2px dashed
red".

Propiedades de Cuadro de texto


Texto (Text)
El texto introducido en el campo.

Marcador de posición (Placeholder)


Texto que aparece débilmente cuando el campo está vacío. Sirve de pista para saber para qué
sirve ese campo, (como Nombre de usuario (Username)).

Consejo de Herramienta (Tooltip)


Un consejo que aparece so el usuario pone el ratón encima del cuadro de texto y espera. Déjalo
en blanco si no quieres que haya consejo.

Visibilidad inicial (Initial visibility)


Si el cuadro de texto se muestra o no al inicio. Si es Invisible el campo se debe mostrar con la
acción Hacer visible (Set visible).
Habilitado (Enabled)
Si el cuadro de texto está habilitado al inicio. Si No, el campo estará bloqueado y no se podrá modificar.

Sólo lectura (Read-only)


Establece si el texto es de sólo lectura, que significa que el texto no se puede modificar pero sí
seleccionar. Es diferente a deshabilitar el campo, ya que entonces no se podrá seleccionar.

Comprobar ortografía (Spell check)


Habilita el corrector en el texto introducido en el campo, si el navegador lo soporta. Si está
habilitado los errores ortográficos se subrayarán con una línea roja.

Tipo (Type)
Ajusta el tipo de contenido que se tiene que introducir en el campo. Puede ser:
Texto (Text) cualquier contenido.
Contraseña (Password) cualquier contenido pero escondiendo los caracteres.
Email para secuencias de formato similar a joe@bloggs.com.
Número (Number) sólo caracteres numéricos.
Número de teléfono (Telephone number) sólo caracteres de números de teléfono.
URL direcciones web de formato similar a http://example.com.
Área de texto (Área de texto) texto de varias líneas.
Los de tipo email, número, número de teléfono y URL son más útiles en dispositivos móviles ya que
cambia el tipo de teclado táctil de acuerdo al contenido a introducir. Por ejemplo, Texto mostrará un
teclado general mientras que Número mostrará solo los números, haciendo la tarea más fácil al usuario.

Tamaño de fuente automático (Auto font size)


Ajusta automáticamente la propiedad de tamaño de fuente de acuerdo a la escala de la capa y del plano.
Esto evitará se muestre la propiedad CSS ajustada manualmente con la acción Ajustar estilo CSS (Set CSS
style). Ajusta a No si pretendes ajustar tú mismo el tamaño con Ajustar estilo CSS (Set CSS style).

ID (Opcional)
Una id adicional para el elemento en el DOM (Modelo de Objetos del Documento). Puede ser útil para
acceder al valor del elemento desde scripts externos, o dar estilo con CSS en la página HTML.

Condiciones de Cuadro de texto


Cotejar texto (Compare text)
Coteja el texto introducido en el campo. Puede diferenciar mayúsculas de minúsculas (“TEXT” sería
distinto de “text”) o no (“TEXT” sería lo mismo que “text”).

Clicado (On clicked)


Detonado cuando el usuario clica el campo

Doble-clicado (On doublé-clicked)


Detonado cuando el usuario hace doble clic en el campo

Texto cambiado (On text changed)


Detonado siempre que el texto del campo se modifica, escribiendo, borrando, cortando/copiando, etc.
Acciones de Cuadro de texto
Ajustar estilo CSS (Set CSS style)
Ajusta el estilo CSS (Hojas de estilo en cascada) en el elemento Cuadro de texto. Para más información
ve a la sección Estilo de Cuadro de Texto. Nota que si la propiedad Tamaño de fuente automático (Auto
font size) está activada, cualquier cambio en esta acción no se aplicará.

Habilitar (Set enabled)


Habilita o deshabilita el campo. Cuando está deshabilitado, el campo está bloqueado y no se puede
modificar.

Enfocar (Set focused)


Enfoca el campo. El cursor de texto parpadeará y estará preparado para la escritura.

Ajustar marcador de posición (Set placeholder)


Ajusta el texto que aparecerá débilmente cuando el campo esté vacío. Se usa para dar pistas sobre qué
debe contener el campo (como Nombre de usuario (Username)).

Establecer sólo lectura (Set read-only)


Establece si el campo es de sólo lectura, que significa que el texto no se puede modificar pero sí
seleccionar. Es diferente a deshabilitar el campo, ya que entonces no se podrá seleccionar.

Ajustar texto (Set text)


Ajusta el texto introducido en el campo.

Ajustar consejo de herramienta (Set tooltip)


Ajusta el texto que aparecerá en el consejo. Déjalo blanco si no quieres que aparezca.

Expresiones de Cuadro de texto


Texto (Text)
Da la secuencia que contiene el texto introducido en el campo.

6.17 Fondo Adosado (Tiled Background)


El objeto Fondo Adosado muestra una imagen repetidamente formando un mosaico, como se ve abajo.

Este mosaico se puede conseguir con un solo objeto de Fondo Adosado, y mucho más rápido (y más fácil
de editar) que usar varios objetos Sprite en una cuadrícula. Usa este objeto simpre que la imagen se repita.

Este objeto no puede tener polígono de colisión. Siempre colisionand e acuerdo al rectángulo de acción
(bounding rectangle).
Además, se les puede aplicar efectos. Para más información ve a Efectos.

Tamaños potencia de dos (Power-of-two sizes)


Para unos mejores resultados, usa cuadrados de potencia dos para el mosaico (por ejemplo 16x16, 32x32,
64x64, 128x128...). Se consiguen mejores resultados en el modo WebGL. El objeto seguirá funcionando
con otros tamaños que no tengan potencia dos, pero la calidad se puede reducir ya que la imagen tiene
que estrecharse a un tamaño en potencia dos antes de adosarse. (Nota que esto no se aplica a los objetos
Sprite, que pueden usar cualquier tamaño).

Propiedades de Fondo Adosado


Imagen (Image)
Clica el enlace Editar (Edit) para editar la imagen del mosaico.

Visibilidad inicial (Initial visibility)


Elige si el objeto se muestra (visible) o se oculta (invisible) al inicio del plano.

Origen (Hotspot)
Elige donde está el origen en el objeto. Por defecto está en la parte de arriba a la izquierda del rectángulo
de acción, pero se puede poner en el Centro (Center) que puede ser útil para rotar el objeto.

Condiciones, acciones y expresiones de Fondo Adosado


El Fondo Adosado tiene unas pocas condiciones, acciones y expresiones únicas. Ve a Características
comunes para documentarte sobre las funciones comunes a varios objetos en C2.

Condiciones de Fondo Adosado


Imagen URL cargada (On image URL loaded)
Detonado cuando la acción Cargar imagen desde URL (Load image from URL) termina de descargar la
imagen y está preparado para mostrarla.

Acciones de Fondo Adosado


Cargar imagen desde URL (Load image from URL)
Carga una imagen de una URL dada. No se muestra hasta que la imagen se ha descargado
completamente, cuando se detona Imagen URL cargada (On image URL loaded). Las imágenes cargadas
de diferentes dominios están sujetas a las restricciones entre dominios de las solicitudes AJAX. Los datos
URI se pueden pasar a imagen, como una captura de pantalla o imagen de la webcam.

6.18 Táctil (Touch)


El objeto Táctil detecta entradas de dispositivos táctiles como iPhones, iPads, Android y Windows 8. La
opción táctil para ordenadores de mesa también está disponible, pero son poco usuales en comparación a
los móviles.

El objeto Táctil también da entradas de acelerómetros y giroscopios (inclinación/dirección de la brújula)


si el dispositivo los soporta.

Es mejor habilitar entradas táctiles siempre que sea posible. En la actualidad muchos usuarios suelen
navegar en dispositivos móviles sin teclado ni ratón. Si tu juego no soporta los controles táctiles, estos
usuarios no podrán jugar tu juego. Para una guía de cómo usar estos controles ve al tutorial Touch
controls ⇗.
Multi-táctil (Multi-touch)
El objeto Táctil soporta también estímulos táctiles múltiples. Este modo es más útil con las condiciones
Objeto tocado (On touched object) y Está tocando objeto (Is touching object), que pueden detectar varios
controles táctiles simultáneos.
Para más usos avanzados, las expresiones Contador de toques (TouchCount), XAt y YAt dan los contactos
actuales en la pantalla. Los toques tienen un índice basado en 0, así que 0 es el primer toque, 1 el segundo
y así sucesivamente. Los toques se ordenan como una pila: el primero (el más viejo) es siempre el 0, el
segundo es siempre el 1 y así sucesivamente. Si un toque se destruye y después se vuelve a añadir, se
convertirá en el último toque de la lista.

Propiedades de Táctil
Usar entradas de ratón (Use mouse input)
Si está en Sí, los clics del ratón simularán los toques en la pantalla. Clicar y arrastrar con el botón
izquierdo del ratón simulará un arrastre con el dedo y los clics sencillos simularán toques. Puede ser muy
útil para probar que los eventos táctiles funcionan correctamente en un ordenador de mesa que no tenga
pantalla táctil. Sin embargo, sólo los toques simples se pueden simular además de que el ratón es mucho
más preciso, por lo que es mejor probarlos en un dispositivo táctil real.

Condiciones de Táctil
Cotejar velocidad de toque (Compare touch speed)
Coteja la velocidad de un toque específico (dado por su índice basado en 0). La velocidad se mide en el
lienzo en píxeles por segundo, por lo que no se ve afectado por la escala de la pantalla.

Está tocando (Is in touch)


Verdadero si algo está tocando la pantalla.

Está tocando un objeto (Is touching object)


Verdadero si se está tocando un objeto dado.

Toque finalizado (On touch end)


Detonado cuando cualquier toque se suelta de la pantalla.

Toque empezado (On touch start)


Detonado ante cualquier toque de la pantalla.

Objeto tocado (On touched object)


Detonado cuando se toca un objeto dado.

Acciones de Táctil
El objeto Táctil no tiene acciones.

Expresiones de Táctil
Aceleración X (AccelerationX)
Aceleración Y (AccelerationY)
Aceleración Z (AccelerationZ)
Da el movimiento actual del dispositivo como su aceleración en cada eje en m/s^2 (metros por segundo
por segundo) excluyendo el efecto de la gravedad. La expresión que incluye la gravedad (abajo) es más
común; esta dará 0 en los dispositivos que no la soporten.
Aceleración X con G (AccelerationXWithG)
Aceleración Y con G (AccelerationYWithG)
Aceleración Z con G (AccelerationZWithG)
Da el movimiento actual del dispositivo como su aceleración en cada eje en m/s^2 (metros por segundo
por segundo) incluyendo la aceleración causada por la gravedad, que es sobre 9.8 m/s^2 hacia abajo. Esta
expresión es comúnmente soportada. Sin embargo, algunos dispositivos no garantizan la detección de
movimiento, en cuyo caso dará 0 en cada caso.
Alpha
Beta
Gamma
Da la orientación del dispositivo si es soportada, o 0 en caso de que no. Alpha es la dirección de la brújula
en grados. Beta es la inclinación de adelante hacia atrás en grados (la inclinación ante ti si lo mantienes
delante de ti). Los valores positivos indican inclinación hacia adelante y los negativos hacia atrás. Gamma
es la inclinación hacia los lados en grados (si lo mantienes delante de ti). Los valores positivos indican
inclinación hacia la derecha y los negativos hacia la izquierda.

X Absoluta (AbsoluteX)
Y Absoluta (AbsoluteY)
X en (índice) Absoluta (AbsoluteXAt(index))
Y en (índice) Absoluta (AbsoluteYAt(index))
Da la posición actual de un toque sobre el lienzo. Será (0, 0) en la parte de arriba a la izquierda y aumenta
con el tamaño de la ventana. No se ve afectado por desplazamientos o escalas del juego. Las expresiones
En (At) dan la posición absoluta de un toque dando su índice basado en 0, permitiendo toques múltiples.

X
Y
XAt(index)
YAt(index)
Da la posición actual de un toque en las coordinadas del plano. Cambia reflejando desplazamientos y
escalas. Sin embargo. Si se mueve, escala o rota una sola capa esta expresión no la tendrá en cuenta - para
ese caso usa la versión de abajo. Las expresiones En (At) dan la posición absoluta de un toque dando su
índice basado en 0, permitiendo toques múltiples.

X (“capa”) (X("layer"))
Y (“capa”) (Y("layer"))
XAt(index, "layer")
YAt(index, "layer")
Da la posición actual de un toque en las coordinadas del plano, incluyendo desplazamientos y escalas en
cualquier capa. La capa se identifica por la secuencia de su nombre o por su índice basado en 0
(Touch.X(0)). Las expresiones En (At) dan la posición absoluta de un toque dando su índice basado en 0,
permitiendo toques múltiples. Por ejemplo, para conseguir la coordinada X del segundo toque de la capa
de abajo, la expresión sería Touch.XAt(1, 0).

Contador de toques (TouchCount)


Número de toques actuales en contacto con la pantalla del dispositivo.

Ángulo en (índice) (AngleAt(index))


Da el ángulo de movimiento de un toque específico en grados dando su índice basado en 0. Un toque
debe moverse a través de la pantalla para que esta expresión tenga un valor útil.
Velocidad en (índice) (SpeedAt(index))
Da la velocidad de un toque específico (dado por su índice basado en 0). La velocidad del toque se mide
en el lienzo en píxeles por segundo, por lo que no se ve afectado por ninguna escala del dispositivo.

6.19 Medios de comunicación del Usuario (User Media)


El objeto Medios de comunicación del Usuario permite obtener entradas de cámara de un usuario.
Requiere un dispositivo de video en el sistema del usuario, como una webcam o la cámara del móvil. Se
podrán obtener fotos y transferirse a Sprites o a Fondos Adosados.
Por razones de seguridad, la mayoría de los navegadores pedirán permiso al usuario antes de permitir
entradas de cámara y mostrará notificaciones cuando la cámara se esté usando.

Este objeto tiene muchas características comunes a otros objetos, incluyendo la posibilidad de aplicar
efectos.

En el plano
El objeto Medios de comunicación del Usuario aparece como un rectángulo en la Vista de Plano,
con una cruz roja. Representa donde se mostrará el video introducido en el plano.

Condiciones de Medios de comunicación del Usuario


Solicitud de medios aprobada (On media request approved)
Detonado cuando el usuario confirma que quiere usar la cámara tras la acción Solicitar cámara (Request
camera) indicando el permiso a la aplicación para usar la cámara.

Solicitud de medios rechazada (On media request declined)


Detonado cuando el usuario cancela la petición tras la acción Solicitar cámara (Request camera)
indicando que no da permiso a la aplicación para usar la cámara.

Soporta medios de usuario (Supports user media)


Verdadero si el navegador actual puede usar el objeto Medios de comunicación del Usuario. No todos
ellos pueden así que en este caso se indicará que no está disponible. Puede ser verdadero incluso aunque
el usuario no tenga dispositivos de video instalados en su sistema, ya que solo tiene en cuenta la
capacidad del navegador de usar cámaras o no.

Acciones de Medios de comunicación del Usuario


Solicitar cámara (Request camera)
Muestra una petición de seguridad para dar permiso a la aplicación para usar entradas de cámara.
Solicitud de medios aprobada (On media request approved) o Solicitud de medios rechazada
(On media request declined) se detonarán dependiendo de la respuesta. Si se aprueba el objeto se
aparecerá en el plano y mostrara entradas de video.

Foto (snapshot)
Si el usuario ha aprobado la solicitud de cámara y el objeto se muestra, está acción capturará el frame
actual. La imagen estará disponible en la expresión FotoURL (SnapshotURL) como datos URI. La imagen
se podrá cargar en un Sprite o Fondo adosado usando la acción Cargar imagen de una URL (Load image
from URL) y usando FotoURL (SnapshotURL). Esta acción muestra parámetros opcionales para
especificar el formato de compresión, lo que es útil si pretendes subir y guardar la imagen en un archivo
más pequeño.
Parar (Stop)
Finaliza cualquier captura de video activa. Se debe volver a pedir permiso para poder usarse de nuevo.

Expresiones de Medios de comunicación del Usuario


FotoURL (SnapshotURL)
Un dato URI que representa la foto capturada tras la acción Foto (Snapshot), de otra forma estará vacía.
La imagen se podrá cargar en un Sprite o Fondo adosado usando la acción Cargar imagen de una URL
(Load image from URL) y usando FotoURL (SnapshotURL). Además, los datos URI se pueden enviar a
un servidor, guardado en un disco o cualquier otra cosa que quieras hacer con ellos.

Anchura de video (VideoWidth)


Altura de video (VideoHeight)
Si una grabación de video está aprobada y activa, esto da el tamaño en píxeles de la grabación que hace el
dispositivo (que puede no ser la misma que la del objeto en el plano). Si no está activa dará 0.

6.20 Almacenamiento Web (WebStorage)


El objeto Almacenamiento Web puede almacenar datos locales en el ordenador del usuario entre
sesiones. Por ejemplo, puede usarse para almacenar el último guardado y restaurar el progreso del jugador
cuando vuelve a jugar.

Almacenamiento por dominio


El objeto asocia todos los datos almacenados con un dominio. Por ejemplo, todos los juegos que
funcionan en scirra.com comparten los mismos datos, pero los de facebook.com usan unos totalmente
diferentes a los anteriores.

La mayoría de los navegadores ponen un tamaño máximo de almacenamiento de datos en la Web - el


límite común es 5mb. Si excedes el límite se detonará Cuota excedida (On quota exceeded) del objeto
Almacenamiento Web.

Almacenamiento Local vs. De sesión


El objeto permite que los datos se almacenen en dos lugares: Almacenamiento local y de sesión.

El almacenamiento local es permanente (hasta que el usuario borre el almacén). Si el usuario vuelve a
entrar al juego, el almacenamiento local tendrá sus datos anteriores guardados.

El almacenamiento de sesión sólo dura durante la sesión actual. Si el usuario vuelve a jugar este
almacenamiento estará vacío.

Usar Almacenamiento Web


El objeto usa un modelo de almacenamiento muy sencillo: los valores se almacenan bajo claves, similares
a las del objeto Diccionario. Por ejemplo, el valor 100 se puede almacenar con la clave puntuación
mediante la acción Ajustar valor local “puntuación” a 100 (Set local value "score" to 100). De la misma
forma el valor John se puede almacenar con la clave nombre. Entonces, la expresión Almacenamiento
Web. Valor local (“puntuación”) (WebStorage.LocalValue("score")) dará “100” (como una secuencia) y

Almacenamiento Web. Valor local (“nombre”) (WebStorage.LocalValue("name")) dará “John”, y estos


valores continuaran en las sesiones siguientes. (Si se usa almacenamiento de sesión los valores solo
valdrían para la sesión actual del navegador).
Nota que Alamcenamineto Web solo almacena secuencias. Si pones una clave a un número como 100,
cuando lo recuperes será una secuencia. Para volver a convertirlo, usa la expresión del sistema int,
int(WebStorage.LocalValue("score")).

Condiciones de Almacenamiento Web


Existe clave local/de sesión (Local/Session key exists)
Comprueba si un valor ha sido guardado con una clave en cualquiera de los dos almacenamientos.

Cuota excedida (On quota exceeded)


La mayoría de los navegadores limitan la cantidad de datos que se pueden Almacenar en la Web a 5mb.
Si se excede ese límite o el usuario cancela los permisos para incrementar el espacio de almacenaje,
entonces funcionará esta condición. No podrás añadir nuevas claves ni ajustar claves ya existentes para
valores más largos hasta que borres alguno de los valores anteriores o vacíes todos los datos.

Acciones de Almacenamiento Web


Vaciar almacenamiento local/de sesión (Clear local/session storage)
Vacía cualquiera de estos dos almacenajes del dominio, sin dejar ni un dato.

Quitar valor local/de sesión (Remove local/session value)


Borra una clave (y su valor asociado) de algunos de los dos almacenamientos. No volverá a existir.

Ajustar valor local/de session (Set local/session value)


Almacena un valor (secuencia o número) para una clave en cualquiera de los dos almacenamientos. Si la
clave existe se actualiza y si no se crea.

Cargar JSON (Load JSON)


Carga claves y valores locales almacenados de datos JSON. El formato JSON del objeto Diccionario es
compatible, así que se pueden intercambiar datos entre los dos objetos, pero nota que Almacenamiento
Web solo almacena secuencias (todos los números se convertirán en secuencias). Si el Modo (Mode) es
Colocar (Set), el almacenamiento local se borra primero y después se cargan los datos. Si el Modo (Mode)
es Mezclar (Merge), las calves en los datos JSON se añaden o sobrescriben a las claves ya existentes.

Expresiones de Almacenamiento Web


Local en (LocalAt)
De sesión en (SessionAt)
Da a los valores un índice basado en 0 si todas las claves están almacenadas en orden alfabético. Útil para
listar todos los datos almacenados.

Contador Local (LocalCount)


Contador de Sesión (SessionCount)
Da el número de claves existentes en el almacenamiento de este dominio.

Clave Local en (LocalKeyAt)


Clave de Sesión en (SessionKyeAt)
Da a las claves un índice basado en 0 si todas ellas están almacenadas en orden alfabético. Útil para listar
todos los datos almacenados.

Valor Local (LocalValue)


Valor de Sesión (SessionValue)
Recupera el valor almacenado para una clave. Si la clave no existe dará 0.
Como JSON (AsJSON)
Da el contenido completo de un almacenamiento local en formato JSON. El resultado se podrá cargar
también en el objeto Diccionario pero nota que Almacenamiento Web solo almacena secuencias por lo
que todos los valores en el diccionario se convertirán en secuencias.

6.21 Windows 8
El objeto Windows 8 (W8 en adelante) da acceso a características específicas de plataformas disponibles
cuando se usa el juego como aplicación de Windows 8. Nota que estas características no se aplicarán para
otras formas, incluso en Internet Explorer - sólo funciona en el nuevo estilo de apps de W8 a partir de su
menú de inicio.

W8 también soporta entradas táctiles que es el único método disponible para móviles y tabletas de W8.
Para que funcione en estos dispositivos asegúrate de añadir el objeto Táctil.

Datos de itinerancia (Roaming data)


Las características del objeto que usan datos itinerantes están diseñadas para usarse de la misma forma
que el objeto Almacenamiento Web. Con Almacenamiento Web será más fácil usar estas características.
La principal diferencia entre el objeto Almacenamiento Web y los datos de itinerancia es que en W8 los
datos de itinerancia están sincronizados entre todos los dispositivos móviles.

Como en Almacenamiento Web todos los valores de datos de itinerancia son secuencias. Puedes
almacenar números en los datos de itinerancia, pero se convertirán automáticamente en secuencias. Para
volver a convertir secuencias en número usa las expresiones del sistema int() o float().

Condiciones de W8
Datos cambiados (On data changed)
Detonado cuando los datos de itinerancia se han actualizado con datos de otro dispositivo. Normalmente
esto ocurre cuando guardas los datos de itinerancia en un dispositivo y después el usuario cambia la
aplicación a otro dispositivo. Puede haber tiempo de espera hasta que se sincronicen los datos de
itinerancia y, cuando esté todo preparado, este detonador se disparará.

Existe clave de itinerancia (Roaming key exists)


Verdadero si una clave dad existe en el almacenamiento de itinerancia.

Compartiendo (On share)


Detonado cuando el usuario activa Compartir (Share). Para especificar qué compartir, usa una de las
acciones para compartir de este detonador.

Cotejar estado de vista (Compare view state)


Comprueba el estado actual de la vista de la aplicación. Puede ser la tradicional pantalla completa
apaisada o vertical, o snapped (que significa que la aplicación está a un lado de la ventana, en un formato
estrecho) o filled (cuando hay distintas aplicaciones en vista snapped y ésta está usando el área más
grande de la pantalla).

Estado de vista cambiado (On view state changed)


Detonado cuando se cambia el estado de la vista, (para detectar que está snapped usar Estado de la vista
snapped (On view state snapped))
Es una aplicación de W8 (Is Windows 8 app)
Verdadero si está funcionando como una aplicación de W8, de otra forma será falsa. Nota que seguirá
siendo falsa cuando la uses en modo Escritorio (Desktop) o incluso en Internet Explorer 10; sólo será
verdadero usando el nuevo estilo de aplicaciones de W8 desde el menú de inicio. Si la condición es falsa,
ninguna de las características de este objeto estará disponible.

Acciones de W8
Ajustar texto en mosaico (Set live tile text)
Cambia el mosaico de la aplicación en el menú de inicio para que muestre texto. Se debe elegir una
plantilla prediseñada. Para una vista previa, mira el catálogo tile template catalog on MSDN ⇗. Nota que
usar plantillas amplias requerirá que tu aplicación esté usando un mosaico amplio; si lo cambias a una
plantilla de tamaño diferente no funcionará.

Eliminar datos de itinerancia (Clear roaming data)


Borra todas las claves de los datos de itinerancia, dejándolos vacíos.

Quitar valor de itinerancia (Remove roaming value)


Quita una clave específica de los datos de itinerancia.
Ajustar valor de itinerancia (Set roaming value)
Almacena una clave y un valor asociado a los datos de itinerancia. Si ya existe el valor se sobrescribe y si
no se crea. Los valores se almacenan como secuencias. Puedes usar un número como valor, pero se
convertirá y se recuperará en forma de secuencia.

Fallo al compartir (Fail share)


Solo válido en un evento Compartiendo (On share). Usa esta acción para indicar que compartir ha fallado
o no está disponible.

Compartir HTML (Share HTML)


Solo válido en un evento Compartiendo (On share). Usa esta acción para compartir texto en formato
HTML de la aplicación.

Compartir enlace (Share link)


Solo válido en un evento Compartiendo (On share). Usa esta acción para compartir un enlace, como la
dirección de tu página.

Compartir texto (Share text)


Solo válido en un evento Compartiendo (On share). Usa esta acción para compartir texto de la aplicación.

Mostrar compartir UI (Show share UI)


Muestra Compartir UI (Share UI) de W8 automáticamente. Asegúrate de usarlo con cuidado para no
ofender o molestar a tus usuarios. Por ejemplo, una buena opción es un botón Compartir (Share)
personalizado que muestre Compartir UI (Share UI). Esta acción solo funciona cuando tu aplicación está
en la ventana activa.

Intentar quitar snap (Try unsnap)


Si tu aplicación está en la vista snapped, esto intenta cambiarla a filled o pantalla completa. La acción
puede no funcionar si el usuario está usando otra aplicación.
Expresiones de W8
Valor de itinerancia (clave) (RoamingValue (key))
Recupera un valor del almacenamiento de itinerancia asociado a una clave dada. Si la clave no existe se
dará una secuencia vacía. Nota que todos los valores se recuperan en secuencias, aunque los originales
fueran números.

6.22 XML
El plugin XML puede analizar y leer datos de documentos XML. Usa XPath para acceder a ellos. XPath
es un tipo de lenguaje de consulta para XML similar a SQL para bases de datos. Para aprender más sobre
XPath clica los siguientes enlaces:
W3Schools XPath tutorial ⇗
Some XPath examples ⇗
Another XPath tutorial with examples ⇗

El plugin XML es solo de lectura. Puedes leer datos pero no cambiar ningún valor en
documentos XML.

Para características comunes a otros plugins ve a Características comunes.

Cargar un documento XML


XML debe estar cargado como una secuencia con la acción Cargar (Load). Si tienes un pequeño
fragmento de XML, puedes copiarlo directamente en el parámetro de la acción. Sin embargo, se
recomienda que solicites un archivo XML de un servidor usando el objeto AJAX. Cuando se complete la
solicitud, introduce ÚltimoDato. AJAX (AJAX.LastData) en la acción Cargar (Load). Entonces ya podrás
leer los datos recibidos.

Internet Explorer
Internet Explorer no soporta consultas XPath que dan un número (como count(…)). En este caso puedes
usar la expresión Contador de nodos (NodeCount) en su lugar. Asegúrate de probar tu proyecto en varios
navegadores. El resto de ellos tienen soporte completo estándar para XPath.

Condiciones XML
Para cada nodo (For each node)
Repite el evento una vez por cada nodo dado por la consulta XPath. Normalmente se usará con consultas
que dan nodos múltiples, como "/bookstore/book" para seleccionar todos los nodos “libro” (“book”) bajo
“almacen de libros” (“bookstore”). En el evento Para cada nodo (For each node) el nodo actual se ajusta
al que está siendo repetido. Esto significa que XPaths relativos, como "title/text()" trabajan en relación
con el nodo actual (en este caso dando el texto de la pestaña “título” (“title”)). Para cada nodo (For each
node) también se puede anidar, así que puedes repetir otra lista relativa en el nodo actual.

Acciones XML
Cargar (Load)
Carga un documento XML de una secuencia. Mira las sección de arriba Cargar un documento XML.
Expresiones XML
Contador de nodos (NodeCount)
Da el número de nodos dados por una expresión XPath. Por ejemplo, puede contar el número de
elementos en un nombre dado. En el evento Para cada nodo (For each node), XPath es relativo al nodo
actual.

Valor de número (NumberValue)


Da un número de una expresión XPath. Si se dan múltiples valores, solo se recupera el primero. En el
evento Para cada nodo (For each node), XPath es relativo al nodo actual.

Valor de secuencia (StringValue)


Da una secuencia de una expresión XPath. Si se dan múltiples valores, solo se recupera el primero. En el
evento Para cada nodo (For each node), XPath es relativo al nodo actual.
7. Referencia de Sistema
El objeto Sistema es el único objeto integrado en C2. Ofrece características para acceder al motor del
juego y usos que son útiles para la mayoría de los juegos. Para más información sobre el objeto Sistema
ve a la sección del Resumen Estructura del Proyecto.

7.1 Condiciones de Sistema


Esta sección describe todas las condiciones en el objeto integrado Sistema de C2. Se listan en el orden en
el que aparecen en el diálogo de Añadir Condición.

General
Cotejar dos valores (Compare two values)
Coteja dos expresiones cualquiera (números o texto). El resultado puede ser Igual (Equal),
Distinto (Not equal), Menor (Less), Menor o igual (Less or equal), Mayor (Greater) o Mayor o
igual (Greater or equal).

Cada tick (Every tick)


Una condición que siempre es verdadera. Funciona de forma independiente y se comprueba una vez por
tick, de ahí el nombre. Un tick es sobre 60 veces por segundo en la mayoría de ordenadores; para más
información mira cómo funcionan los eventos. Añadir Cada tick (Every tick) a un evento con otras
condiciones es redundante y no tendrá efecto.

Está entre valores (Is between values)


Comprueba si un número está entre dos valores (mayores o iguales que un valor más bajo y
menores o iguales que otro más alto).

Grupo activo (Is group active)


Comprueba si un grupo de eventos está activo o inactivo. Para identificarlos se usa el nombre del grupo.

Variables Locales y Globales


Cotejar variable (Compare variable)
Coteja el valor de una variable de evento (global o local). Estas variables pueden almacenar números y
texto. El resultado puede ser Igual (Equal), Distinto (Not equal), Menor (Less), Menor o igual (Less or
equal), Mayor (Greater) o Mayor o igual (Greater or equal).

Capas y Plano
Cotejar opacidad (Compare opacity)
Coteja la opacidad (o semitransparencia) de una capa, de 0 (transparente) a 100 (opaca). La
opacidad de una capa no puede estar fuera de este rango.

Se soportan efectos (Effect are supported)


Verdadero si el soporte WebGL está disponible para mostrar los efectos. Para más información ve a la
sección Efectos.

Capa visible (Layer is visible)


Comprueba si la capa actual es visible o no.
Captura de lienzo (On canvas snapshot)
Detonado tras la acción del sistema Hacer captura de lienzo (Snapshot canvas), cuando la cpatura está
preparada. Se puede acceder a ella con la expresión del sistema Captura de lienzo (CanvasSnapshot).

Bucles
Los bucles se pueden detener con la acción del sistema Parar bucle (Stop Loop).

Para (For)
Repite el evento un número de veces, usando una índice de variables con un rango de valores. El índice
puede recuperarse con la expresión Índice de Bucle (LoopIndex) y así dar el nombre del bucle.

Para cada (For Each)


Para cada (ordenado) (For Each (ordered))
Repite el evento una vez por ejemplo recogido. Sólo repite el evento para ejemplos que reúnan
condiciones anteriores. Para más información sobre la recogida de ejemplos mira cómo funcionan los
eventos. Para cada (For Each) suele ser mal utilizada o usada de forma redundante - las acciones ya
aplican para cada ejemplo recogido por condiciones, así que a menudo no es necesaria. Sin embargo, si
entiendes completamente cómo funcionan los eventos la puedes usar para forzar al evento a aplicarse a
cada ejemplo aunque el propio evento no lo haría de forma normal. La variante “ordenado” (“ordened”)
permite definir el orden en el que los ejemplos se repiten con una expresión. Por ejemplo, ordenando por
Sprite.Y ascendente repetirá los ejemplo de arriba de la pantalla primero y se moverá hacia abajo.

Repetir (Repeat)
Simplemente repite el evento un número dado de veces. Esto comprueba cualquier condición que
lo sigue en cada repetición y, si se reúnen esas condiciones, también funcionarán las acciones y
sub-eventos en cada repetición.

Mientras (While)
Repite el evento hasta que una de las otras condiciones del evento sea falsa o se use la acción Parar bucle
(Stop loop). Ten cuidado de no crear bucles infinitos que pueden ralentizar el juego

Recoger ejemplos
Recoger todos (Pick all)
Selecciona todos los objetos. Las condiciones posteriores recogerán entonces de todas, en vez de la
selección hecha por condiciones previas. Para más información de cómo funciona la selección de
ejemplos en eventos ve a Cómo funcionan los ejemplos. Útil en sub-eventos para afectar a ejemplos
distintos del anterior.

Recoger ejemplo Nº (Pick Nth instance)


Selecciona un ejemplo de una lista dada de objetos recogidos. Es más útil en sub-eventos para afectar sólo
a ciertos ejemplos. Por ejemplo, en un evento “Sprite colisiona con Sprite”, Recoger ejemplo 0 (Pick 0th
instance) y Recoger ejemplo 1 (Pick 1st instance) se usan para que ambas actúen en esa colisión.

Si todos los objetos están seleccionados, esta condición se puede usar también para recoger un objeto por
su índice de ID (IID). Para más información ve a Características comunes.
Recoger ejemplo al azar (Pick random instance)
Recoge un ejemplo al azar de la selección actual de objetos. En otras palabras, esta condición sigue a otra
condición y recogerá una al azar de las que han reunido la condición anterior. De otra forma recogerá al
azar de entre todos los ejemplos.

Condiciones especiales
Otro (Else)
Funciona si el evento anterior no ha funcionado. Nota que esta condición no selecciona objetos: si sigue a
un evento que recogió objetos, en el evento Otro (Else) todos los ejemplos se vuelven a seleccionar. Otro
(Else)sólo puede seguir a eventos normales (no detonados). También puede seguir a otro evento Otro
(Else) con otras condiciones para hacer una cadena “si - otro si -” (“if - else if -”).

Está en vista previa (Is in preview)


Verdadero cuando haces vista previa en C2, y falso cuando funciona tras haber sido exportado. Útil para
eliminar fallos o añadir características de diagnostico sólo para la vista previa.

Está en un dispositivo móvil (Is on mobile devide)


Intenta detectar si el dispositivo actual es uno móvil (teléfono o tableta). Es muy difícil precisar y la
detección pude no ser perfecta: puede haber algunos sistemas móviles para los que esta condición no sea
verdadera y (menos a menudo) sistemas de mesa para los que sí. La condición siempre es verdadera
cuando se usa a través de contenedores PhoneGap o AppMobi y para los dispositivos iOS o Android. A
parte de esto C2 comprobará otros fabricantes de móviles comunes. Dará verdadero si el sistema actual no
es un sistema fijo y ya que hay pocos así en OSs se comprobará en Windows, Linux, OS 9, OS X, Solaris
y BSD.

Detonar cuando sea verdadero (Trigger once while true)


Convierte un evento normal (que se comprueba cada vez o tick) en un detonador. Por ejemplo, si un
evento reproduce un sonido cuando tienes 0 vidas, normalmente el evento funcionará cada tick.
Reproducirá 60 sonidos por segundo y sonaría bastante mal. Añadir Detonar cuando sea verdadero
(Trigger once while true) tras la otra condición hará que el evento funcione sólo cuando sea verdadera.
Esto hace que el ejemplo anterior reproduzca el sonido cuando las vidas estén a 0. Debe ser la última
condición de un evento.

Inicio y fin
Al final del plano (On end of layout)
Detonado cuando el plano está terminando. Puede ocurrir cuando se quiere cambiar de plano o cuando el
proyecto finaliza.

Al inicio del plano (On start of layout)


Detonado cuando un plano empieza.

Tiempo
Cotejar tiempo (Compare time)
Coteja el tiempo, en segundos, desde que el juego empieza. Por ejemplo, los eventos se pueden programar
para suceder cuando el tiempo llegue (sea igual) a 10 segundos.

Cada X segundos (Every X seconds)


Hace que el evento funcione en un intervalo de segundos dado. Se puede usar tras otras condiciones para
hacer funcionar el evento en ese intervalo sólo mientras otra condiciones son verdaderas, como “El
jugador esta pulsando la barra espaciadora Y cada 0,5 segundos: se dispara el láser” ("Player is holding
spacebar AND every 0.5 seconds: fire laser").

7.2 System actions


Esta sección describe todas las acciones en el objeto integrado Sistema de C2. Se listan en el orden en el
que aparecen en el diálogo de Añadir Acción.

Monitor
Ajustar tamaño del lienzo (Set canvas size)
Ajusta el tamaño del lienzo en el área de la página, si aparece en línea a ella (no se usa el modo pantalla
completa).

Capturar el lienzo (Snapshot canvas)


Toma una captura de pantalla del monitor. Esto detona Captura de lienzo (On canvas snapshot) cuando la
foto está preparada y se puede acceder a ella con la expresión del sistema Captura de lienzo
(CanvasSnapshot). Después se podrá cargar en un sprite o en un fondo adosado, enviarse a un servidor o
abrir con el objeto Navegador en una pestaña nueva.
General
Crear objeto (Create object)
Crea un nuevo ejemplo de un tipo de objeto en una posición dada de una capa. Si se elige una Familia, un
tipo de objeto al azar de la familia se seleccionará, creándose un ejemplo para él.

Ir a plano (Go to layout)


Ir a plano (por nombre) (Go to layout (by name))
Cambia a otro plano del proyecto. Nota que las variables globales mantienen su valor actual - no
se reajustan. Para reajustarlas usa la acción del sistema Reajustar variables globales (Reset
global variables).

Reiniciar plano (Restart layout)


Reinicia el plano actual. Nota que, a diferencia de Ir a plano (Go to layout), esta acción reajusta todos los
grupos de eventos a su estado inicial. Las variables globales mantienen su valor actual - no se reajustan.
Para reajustarlas usa la acción del sistema Reajustar variables globales (Reset global variables).

Activar grupo (Set group active)


Activa o desactiva un grupo de eventos. Ningúno de los eventos dentro de un grupo inactivo funcionará
hasta que vuelva a ser activado. Los grupos se identifican por su nombre.

Parar bucle (Stop loop)


Detiene los bucles Repetir (Repeat), Para (For) o Para cada (For each). Estos bucles son
condiciones del sistema. El resto de acciones de eventos y sub-eventos continuarán funcionando,
pero no en bucle.

Variables globales y locales


Añadir a (Add to)
Quitar de (Subtract from)
Ajustar valor (Set value)
Altera el valor almacenado de una variable global o local.

Reajustar variables globales (Reset global variables)


Reajusta todas las variables globales del proyecto a su valor inicial.

Capas y plano
Para más información sobre acciones de los efectos ve a la sección Efectos.

Ajustar ángulo de capa (Set layer angle)


Rota una capa entera a un número de grados.

Habilitar efecto de capa (Set layer effect enabled)


Habilita o deshabilita uno de los efectos de una capa en el plano actual. Esta acción no puede
usarse para alterar capas de otros planos.
Ajustar parámetro de efecto de capa (Set layer effect parameter)
Cambia el valor de uno de los parámetros de un efecto de una capa en el plano actual. Esta acción no
puede usarse para alterar capas de otros planos. El parámetro a cambiar se especifica por su índice basado
en cero, 0 cambiará el primer parámetro, 1 el segundo y así sucesivamente.
Ajustar opacidad de capa (Set layer opacity)
Ajusta la opacidad (o semitransparecia) de una capa completa.

Ajustar escala de capa (Set layer scale)


Ajusta la escala (o zoom) de una capa completa, teniendo en cuenta su propiedad tasa de escala (scale
rate).

Ajustar tasa de escala de capa (Set layer scale rate)


Ajusta la propiedad tasa de escala (scale rate) de una capa, que define cómo de rápido se escala.

Hacer capa visible (Set layer visible)


Muestra o esconde una capa completa.

Ajustar ángulo de plano (Set layout angle)


Rota un plano completo a un número de grados. Rota todas las capas dentro del plano.

Habilitar efecto de plano (Set layout effect enabled)


Habilita o deshabilita uno de los efectos del plano actual. Esta acción no puede usarse para otros planos.

Ajustar parámetro de efecto de plano (Set layout effect parameter)


Cambia el valor de uno de los parámetros de un efecto del plano actual. Esta acción no puede usarse para
alterar otros planos. El parámetro a cambiar se especifica por su índice basado en cero, 0 cambiará el
primer parámetro, 1 el segundo y así sucesivamente.

Ajustar escala de plano (Set layout scale)


Ajusta la escala (o zoom) de un plano completo. Escala todas las capas del plano, teniendo en cuenta su
propiedad tasa de escala (scale rate).

Desplazamiento
Para desplazar, el tamaño del plano debe ser mayor que el tamaño de la ventana o estar activada la
propiedad Desplazamiento ilimitado (Unbounded scrolling). De otra forma no habría a donde desplazarse
y esta acción no tendría efecto.

Desplazarse a objeto (Scroll to object)


Centra la vista en un objeto dado. Desplaza todas las capas teniendo en cuenta su propiedad de paralaje
(parallax).

Desplazar a posición (Scroll to position)


Desplazar a X (Scroll to X)
Desplazar a Y (Scroll to Y)
Ajusta las posiciones X e Y en donde centrar la vista. Desplaza todas las capas teniendo en cuenta su
propiedad de paralaje (parallax).
Tiempo
Ajustar escala de tiempo (Set time scale)
Cambia la tasa a la que el tiempo transcurre en el juego. Útil para efectos a cámara lenta y de pausa. Mira
el tutorial Delta-time and framerate independence ⇗ para más información.
Ajustar escala de tiempo de objeto (Set object time scale)
Restaurar escala de tiempo de objeto (Restore object time scale)
Cambia la tasa a la que el tiempo transcurre para un objeto específico. Afecta al comportamiento del
objeto y a su expresión dt. Restaurarla lo devuelve a la misma escala de tiempo que el resto del juego.
Mira el tutorial Delta-time and framerate independence ⇗ para más información.

Esperar (Wait)
Espera un número de segundos antes de continuar con la siguiente acción o sub-evento. Otros eventos
continuarán funcionando mientras. Mira el tutorial How to use the System 'Wait' action ⇗.

7.3 Expresiones de Sistema


Esta sección da un resumen de las expresiones en el objeto integrado Sistema de C2. Muchas son
operaciones matemáticas comunes y se enumeran con descripciones en el panel de Expresiones, pero aquí
se incluyen completas.

Esta sección no lista los operadores o sintaxis que se usan en las expresiones - solo las expresiones
específicas al objeto Sistema. Para más información general de cómo usar expresiones en C2 ve a
Expresiones.

Monitor
Anchura de la ventana (WindowWidth)
Altura de la ventana (WindowHeight)
Da el tamaño de la ventana. Útil con la propiedad Pantalla completa en el navegador (Fullscreen in
browser) ya que esto habilita una variable de tamaño de ventana. Mira también Supporting multiple
screen sizes ⇗.

Capas
Expresiones donde se requiere una capa, por su nombre (como secuencia) o su índice (como número
basado en 0).

CanvasToLayerX(layer)
CanvasToLayerY(layer)
Calcula las coordenadas del plano por debajo de una posición en las coordenadas del lienzo para una capa
dada.

LayerToCanvasX(layer)
LayerToCanvasY(layer)
Calcula las coordenadas del lienzo por encima de una posición en las coordenadas del plano para una
capa dada.

Ángulo de Capa (capa) (LayerAngle(layer))


Da el ángulo de una capa en grados.
Opacidad de Capa (capa) (LayerOpacity(layer))
Da la opacidad (o semitransparencia) de una capa, de 0 (transparente) a 100 (opaca).

Escala de Capa (capa) (LayerScale(layer))


Da la escala actual de la capa, sin incluir la escala total del plano.

Tasa de escala de Capa (capa) (LayerScaleRate(layer))


Da la tasa de escala actual de la capa, que define como de rápido se escala.

Vista abajo (capa) (ViewportBottom(layer))


Vista izquierda (capa) (ViewportLeft(layer))
Vista derecha (capa) (ViewportRight(layer))
Vista arriba (capa) (ViewportTop(layer))

Da los límites de la vista en coordenadas del plano de una capa dada. No todas las capas tienen
la misma vista si estas usan paralaje, están escaladas o rotadas de forma independiente.

Plano
Captura del lienzo (CanvasSnapshot)
Contiene la imagen resultante de la acción Capturar lienzo (Snapshot canvas) y tras Captura del
lienzo (On canvas snapshot). (Nota que está expresión no estará disponible inmediatamente tras
la acción Capturar lienzo (Snapshot canvas) – solo puedes usarlo cuando Captura del lienzo (On
canvas snapshot) se detone).La expresión da los datos URI del archivo de imagen. Después, esto
puede cargarse en un objeto Sprite o Fondo Adosado mediante Cargar imagen de una URL
(Load image from URL), enviarse a un servidor para almacenarlo localmente o abierto con el
objeto navegador en una nueva pestaña para guardarla en el disco.

Ángulo del plano (LayoutAngle)


Da el ángulo del plano actual en grados. No incluye la rotación de las capas individualmente.

Escala del plano (LayoutScale)


Da la escala del plano complete dada por la acción Ajustar escala de plano (Set layout scale).
Esto no incluye la escala de las capas individualmente.

Anchura del plano (LayoutWidth)


Altura del plano (LayoutHeight)
Da el tamaño del plano actual en píxeles.

Nombre de plano (LayoutName)


Da el nombre del plano actual.

Desplazamiento X (scrollx)
Desplazamiento Y (scrolly)
Da la posición actual en la que la vista está centrada
Matemáticas
Estas expresiones son funciones matemáticas normales que puedes encontrar en calculadoras. Sin
embargo, nota que las funciones que usan ángulos trabajan con grados, no radianes. Los ángulos
empiezan en 0 grados y aumentan hacia la derecha en el sentido de las agujas del reloj.

sin(x), cos(x), tan(x), asin(x), acos(x), atan(x) Funciones trigonométricas que usan ángulos en grados.

abs(x) Valor absoluto de x (abs(-5) = 5).


angle(x1, y1, x2, y2) Calcula el ángulo entre dos puntos.
anglelerp(a, b, x) Interpola linealmente el ángulo a al b por x. Tiene en cuenta la naturaleza cíclica de los
ángulos, no como el estándar lerp.
anglediff(a1, a2) Da la diferencia más pequeña entre dos ángulos
anglerotate(start, end, step) Rota el ángulo desde el inicio (start) hasta el final (end) pasando por el
ángulo de paso (step), todo en grados. Si inicio (start) está a menor distancia en grados del final (end) que
el de paso (step), dará final (end).
ceil(x) Redondea al alza x (ceil(5.1) = 6).
distance(x1, y1, x2, y2) Calcula la distancia entre dos puntos.
exp(x) Calcula e^x.
floor(x) Redondea a la baja x (floor(5.9) = 5).
lerp(a, b, x) Interpolación lineal del ángulo a al b por x. Calcula a + x * (b - a).
unlerp(a, b, y) Invierte la interpolación lineal: si lerp(a, b, x) = y, entonces unlerp (a, b , y) = x. Calcula
(y - a) / (b - a).
ln(x) Logaritmo de base e de x.
log10(x) Logaritmo de base 10 de x.
max(a, b [, c...]), min(a, b [, c...]) Calcula el máximo o el mínimo de números dados. Se puede usar
cualquier número de los parámetros mientras haya al menos dos.
pi La constante matemática pi (3.14159...).
round(x) Redondea x al número entero más cercano (round(5.6) = 6).
sqrt(x) Calcula la raíz cuadrada de x (sqrt(25) = 5).

Sistema
Progreso de carga (loadingprogress)
Da el progreso de la carga actual en un plano cargador, o el progreso de una actualización mientras que la
condición del objeto Navegador Está descargando actualización (Is downloading update) es verdadera.
El progreso viene dado por un número de 0 a 1 (0,5 sería la mitad). Para más información ve a los
tutoriales Como hacer una pantalla de carga personalizada (how to make a custom loading screen ⇗) y
Juegos offline en C2 (offline games in Construct 2 ⇗).

Índice de bucle (loopindex)


Da el índice (número de repeticiones) de cualquier bucle actual.

Índice de bucle (nombre) (loopindex(name))


Da el índice (número de repeticiones) de un bucle dando su nombre. Útil para obtener índices en un bucle
anidado.

Contador de objetos (objectcount)


El número total de objetos creados.
Versión del proyecto (projectversion)
Da la versión introducida en las Propiedades del proyecto. Nota que siempre da una secuencia, no un
número.

Lienzo (renderer)
Da el nombre del lienzo usado para dibujar el juego, que puede ser canvas2d o webgl. Mira la sección
Tecnología para más información sobre lienzos.

Texto
Encontrar (src, texto) (find(src, text))
Encuentra el primer índice en src que aparece en el texto, de lo contrario da -1.

left(text, count)
Da la primera cuenta de caracteres de texto.

len(text)
Da el número de caracteres en el texto.

Minúsculas (texto) (lowercase(text))


Convierte todo el texto dado en minúsculas.

mid(text, index, count)


Da la cuenta de caracteres empezando por el índice en el texto.

Nueva línea (newline)


Una secuencia que contiene un salto de línea. Usar para insertar saltos de línea en secuencias (“Hello" &
newline & "World”)

Sustituir (src, find, rep) (replace(src, find, rep))


Encuentra todos los casos de find en src y las sustituye con rep.

right(text, count)
Da la última cuenta de caracteres del texto.

tokenat(src, index, separator)


Cuenta cuantos tokens hay en src usando separator. Por ejemplo, ("apples|oranges|bananas", "|") da 3.

trim(src)
Da src con todos los espacios en blanco (espacios, tabulaciones, etc.) quitados desde el principio al final
de la secuencia.

Mayúsculas (text) (uppercase(text))


Convierte todo el texto dado en mayúsculas.

Codificar URL (str) (URLEncode(str))


Decodificar URL (str) (URLDecode(str))
Convierte en o desde una secuencia a un formato apropiado para incluir en una URL o datos POST.
zeropad(number, digits)
Rellena los números hasta llegar a ciertos dígitos añadiendo ceros a la izqueirda de los números y dando
como resultado una secuencia. Por ejemplo zeropad(45, 5) dará la secuencia “00045”.

Tiempo
Uso de CPU (CPUUtilisation)
El porcentaje del último Segundo que se gastó en la lógica de la aplicación. Eso es para que usuarios
avanzados hagan mediciones del rendimiento. Nota que en los dispositivos aceleradores de hardware la
renderización ocurre en una GPU separada y esta medición no te podrá decir nada sobre como de rápido
se produce; para ello sería mejor la medición fps.

dt
El tiempo delta en segundos. Ver Delta-time and framerate independence ⇗.

fps
La tasa de frames por segundo (FPS) actual, que es cuantos veces la pantalla se dibuja cada segundo. La
mayoría de los ordenadores funcionan a 60 fps si son suficientemente rápidos.

Contador de ticks (tickcount)


El número de ticks que ha habido desde el inicio del juego.
Tiempo (Time)
El número de segundos desde que el juego empezó, teniendo en cuenta la escala de tiempo.

Escala de tiempo (Timescale)


La escala de tiempo actual.

Tiempo real (Wallclocktime)


El número de segundos desde que el juego empezó, sin tener en cuenta la escala de tiempo (el tiempo en
el mundo real).

Valores
Elegir ((a, b [, c...])) (choose(a, b [, c...]))
Elige uno de los parámetros dados al azar. Por ejemplo, choose(1, 3, 9, 20) escogerá al azar uno de los
cuatro números. También funciona con secuencias, por ejemplo choose("Hello", "Hi") dará Hello o Hi.
Se puede usar cualquier número de parámetros, mínimo dos.
clamp(x, lower, upper)
Da inferior (lower) si x es menor que inferior (lower), superior (upper) si x es mayor que superior
(upper), de lo contrario dará x.

float(x)
Convierte el número entero o el texto x en un número fraccionado.

int(x)
Convierte el número fraccionado o texto x en un número entero.

random(x)
Genera una fracción al azar de 0 a x, sin incluir x. Por ejemplo, random(4) puede generar 0, 2.5, 3.29293,
pero no 4. Usa floor(random(4)) para generar números enteros como 0, 1, 2, 3.

random(a, b)
Genera fracciones al azar entre a y b, incluyendo a pero sin incluir b.

rgb(r, g, b)
Genera un número simple que contiene un color en formato RGB. Es útil para condiciones o acciones que
tienen en cuenta el parámetro color.

str(x)
Convierte el número entero o fracción x en secuencia. Generalmente no es necesario ya que las secuencias
se pueden construir usando el operador &. Por ejemplo “Tu puntuación es ” & puntuación ("Your score is
" & score).

Traducido por Javiusdey de desarrollodejuegos.com.es y Marta Villaescusa

You might also like