¿Qué es un Grupo?

En p5play un Grupo es una colección y un plano para sprites con rasgos y comportamientos similares. ¡Por ejemplo, los puntos en Pac-Man!

La propiedad group.length se puede usar para verificar cuántos sprites hay en un grupo. En este ejemplo, la condición del bucle while es verdadera mientras el grupo de puntos tenga menos de 24 sprites.

En el mini ejemplo, new dots.Sprite crea un sprite que hereda el color del grupo de puntos, la posición y y el diámetro. A cada punto se le asigna una posición x única.

Yo llamo a esto "herencia suave" porque un grupo actúa como un plano para nuevos sprites del grupo.

Puedes acceder a un sprite en un grupo por índice porque los grupos son arrays. Puedes usar cualquiera de los métodos estándar de array de JavaScript en un grupo.

¡Establecer la propiedad de un grupo a un valor diferente afectará a todos los sprites en el grupo! Yo llamo a esto "herencia dinámica".

Usar funciones de movimiento como moveTowards en un grupo, hará que todos los sprites en un grupo se muevan.

Configuradores de propiedades de función flecha

Si estableces una propiedad del grupo a una función flecha =>, cada nuevo sprite creado usando ese grupo usará la función para evaluar la propiedad.

Cuando group.amount se ajusta, el grupo automáticamente creará o eliminará sprites para igualar la cantidad establecida.

En este mini ejemplo, a cada sprite de gema se le asigna una posición aleatoria en el lienzo.

Configuradores de función flecha indexados

¡Los configuradores de flecha pueden usar el índice del sprite en el grupo!

El índice, i, se da como un parámetro de entrada a los configuradores de flecha del grupo. Se puede usar para calcular las propiedades del nuevo sprite del grupo.

Colisiones y Superposiciones

Las funciones de colisión y superposición no son solo para detectar eventos entre dos sprites. También puedes verificar colisiones y superposiciones entre sprites y grupos o entre grupos. Las funciones son:

collides, colliding, collided
overlaps, overlapping, overlapped

En lugar de usar estas funciones en declaraciones if, puedes proporcionarlas con una función de callback como segundo parámetro. La función de callback se ejecutará cuando ocurra el evento de colisión o superposición. La función de callback recibe, como entradas, dos sprites.

En este mini ejemplo la función de callback recibe el sprite del jugador y el sprite de gema en el grupo de gemas con el que el jugador se superpone. Esa gema se recoge (elimina).

Grupo allSprites

p5play crea un grupo allSprites que contiene todos los sprites en un sketch.

Propiedades Personalizadas

¡Puedes agregar tus propias propiedades a los sprites y grupos, al igual que con cualquier otro objeto de JavaScript!

Además, cuando agregas propiedades personalizadas a un grupo, serán heredadas por los nuevos sprites del grupo. Incluso puedes usar funciones flecha como configuradores de propiedades.

Subgrupos

En este mini ejemplo hay dos subgrupos del grupo boxes: smallBoxes y bigBoxes.

Los nuevos sprites creados usando el grupo bigBoxes heredarán rasgos del grupo boxes pero no de los grupos smallBoxes.

El grupo boxes contiene todos los sprites en los grupos smallBoxes y bigBoxes.

La función remove elimina el grupo en sí, solo úsala si no quieres usar el grupo de nuevo. Si solo quieres eliminar todos los sprites de un grupo, usa la función removeAll.

Culling

Por defecto, los sprites se eliminan cuando se van a 10000 píxeles fuera de pantalla en relación con la posición de la cámara. Esto es para evitar que el mundo se haga demasiado grande, lo que ralentizaría la simulación física.

Para cambiar esto, establece allSprites.autoCull = false o usa la función cull para establecer un límite de culling diferente. Ten en cuenta que incluso puede eliminar sprites que no tienen un colisionador físico.

Los sprites que cruzan el límite de culling se eliminan por defecto. Como último parámetro de entrada a la función cull, puedes insertar una función de callback. Cuando se llama, recibe el sprite que fue eliminado y un conteo total de cuántos sprites fueron eliminados en ese cuadro.

Ten en cuenta que en este ejemplo, la cantidad de bolas disminuye si se eliminan más de una bola en un cuadro.

vida

Otra manera de limitar cuánto tiempo existe un sprite es establecer su propiedad life, que es el número de cuadros que el sprite existe. Cuando la vida del sprite llega a 0, será eliminado. Esto es útil para crear objetos temporales como proyectiles y campos de fuerza.

¡Prueba este pequeño juego! Haz clic con el ratón para crear una pelota de playa e intenta mantenerla en el aire con el chorro de agua.

Dibujar

Al igual que con la función sprite.draw, puedes usar group.draw para controlar manualmente cuándo se dibujan los grupos dentro del bucle de dibujo de p5.js.

Cualquier sprite no dibujado manualmente será dibujado automáticamente al final del bucle de dibujo de p5.js, a menos que su propiedad autoDraw esté establecida en falso.

Ten en cuenta que si quieres dibujar manualmente sprites o grupos y usar la cámara, tendrás que activar y desactivar la cámara manualmente.

Actualizar

La función group.update ejecuta la función sprite.update de cada sprite en el grupo. Para evitar la actualización automática establece autoUpdate en falso.

Página anterior Siguiente página