Las capas son las del panel Camadas de la room. En el código, una capa siempre se indica por su nombre, entre comillas.
| Función |
Qué hace |
Ejemplo |
T* spawn<T>(float atX, float atY, std::string_view layer) |
Crea una instancia de T en la capa layer. Devuelve nullptr (con error en la Salida) si la capa no existe o no es de Instâncias. |
spawn<Bullet>(x, y - 8, "Tiros"); |
T* spawnAtDepth<T>(float atX, float atY, int atDepth) |
Crea una instancia fuera de las capas, en un depth elegido. |
spawnAtDepth<Faisca>(x, y, -50); |
void setLayer(std::string_view layer) |
Cambia esta instancia a otra capa de Instâncias. |
setLayer("Frente"); |
const std::string& layerName() |
El nombre de la capa de esta instancia ("" si está fuera de las capas). |
if (layerName() == "Fundo") ... |
| Función |
Qué hace |
Ejemplo |
void setLayerVisible(std::string_view layer, bool show) |
Muestra o esconde una capa. |
setLayerVisible("Segredo", true); |
bool layerVisible(std::string_view layer) |
true si la capa está visible. |
if (layerVisible("Segredo")) ... |
void setLayerPosition(std::string_view layer, float x, float y) |
Pone la esquina de una capa de Fundo (fondo) en (x, y) de la room. |
setLayerPosition("Montanhas", scene().camera.x * 0.5f, 40); |
float layerX(std::string_view layer) y layerY |
La posición actual de la capa. |
float px = layerX("Montanhas"); |
| Función |
Qué hace |
Ejemplo |
int tileAt(std::string_view layer, float atX, float atY) |
El número del tile que está en ese punto de la capa de Tiles (el primero del tileset es el 0), o -1 si no hay tile. |
if (tileAt("Chao", x, y + 12) == 7) ... |
bool solidAt(float atX, float atY) |
true si hay algo sólido en ese punto: un tile sólido o una instancia con solid. |
if (solidAt(x + 10, y)) flipX = !flipX; |
- El depth de una instancia viene de la capa en la que está.
depth todavía se puede leer y cambiar en el código, pero setLayer es la forma más clara de cambiar el orden de dibujo.
- Esconder una capa de Instâncias solo deja de dibujarlas: siguen ejecutándose y colisionando.
- Una capa de Tiles escondida sigue bloqueando el movimiento. Para que deje de colisionar, desactiva Colide en el editor.
- Los tiles sólidos entran solos en
placeFree, moveAndStop, onGround, hitFloor, hitWall y hitCeiling. Mira Colisión y Movimiento.
- Los tiles no cambian con el juego corriendo en esta versión.
Para un menú de opciones de video. Lo que está en la configuración del proyecto es solo el valor inicial.
| Función |
Qué hace |
Ejemplo |
void Window::setFullscreen(bool on) |
Entra en pantalla completa o vuelve a la ventana. |
Window::setFullscreen(!Window::fullscreen()); |
bool Window::fullscreen() |
true si el juego está en pantalla completa. |
if (Window::fullscreen()) ... |
void Window::setScale(WindowScale scale) |
Cómo se amplía la imagen: WindowScale::Integer, Fit (mantener la proporción) o Stretch. |
Window::setScale(WindowScale::Fit); |
WindowScale Window::scale() |
Cómo se está ampliando la imagen. |
if (Window::scale() == WindowScale::Fit) ... |
void Window::setSize(int width, int height) |
Cambia el tamaño de la ventana, en píxeles de pantalla. En pantalla completa no hace nada. |
Window::setSize(1280, 720); |
int Window::width() y height() |
El tamaño actual de la ventana. |
int w = Window::width(); |
int Window::screenWidth() y screenHeight() |
El tamaño del monitor. |
if (Window::screenWidth() >= 1920) ... |
La resolución del juego no cambia con setSize: la imagen se amplía al tamaño nuevo.
Mira Escenario con tiles y Fondo con parallax.