Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

235
Vistas
Phaser 3: ¿Permitir que se emitan partículas con imagen invertida/reflejada?

Tengo un emisor de partículas que emite múltiples duplicados de la misma imagen, como de costumbre. Sin embargo, me gustaría que algunas de las partículas se voltearan, ya sea completamente al azar, o más o menos en el medio, de modo que las partículas que caen hacia la izquierda se volteen y las partículas que caen hacia la derecha no.

Sin embargo, no pude encontrar nada relacionado con voltear partículas sin voltear TODAS ellas. Sólo me gustaría que algunos se voltearan. ¿Es esto posible de alguna manera?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Hay varias formas, creo que la "más rápida" sería simplemente usar la propiedad scaleX del emisor.

este código voltea alrededor del 10% de las partículas ( 0.9 > Math.random() ) , multiplicándolo por -1 , cuando debería voltearse.

Código de ejemplo:

 this.add.particles('sparkle').createEmitter({ x: 200, y: 100, scaleX: { onEmit: function () { return ( 0.9 > Math.random() ) ? -1 : 1; } }, speed: { min: -100, max: 100 }, quantity: 0.1, frequency: 1, });

Pero asumo por una pregunta anterior que tiene un emisor con una propiedad de "escala aleatoria" . En ese caso tendrías que hacer algo como esto:

Código de ejemplo, para partículas escaladas al azar:

 gameState.splash = this.add.particles('droplet').createEmitter({ x: gameState.height/2, y: gameState.width/2, scale: { onEmit: function () { // create random new scale let newRandowmScale = Phaser.Math.FloatBetween(0.05, 0.3); return ( 0.9 > Math.random() ) ? -1 * newRandowmScale : newRandowmScale; } }, speed: { min: -100, max: 100 }, ... });

ACTUALIZAR (SlowerFix): código de ejemplo, para partículas escaladas al azar:

Lo que hace la actualización: guardar la escala actual del evento scaleX y usarla en el evento scaleY . (es hacky, pero debería funcionar. Veré si hay una solución más limpia)

 gameState.splash = this.add.particles('droplet').createEmitter({ x: gameState.height/2, y: gameState.width/2, scaleY:{ onEmit: function(particle){ // keep scale value positive return Math.abs(particle.scaleX); } }, scaleX:{ onEmit: function(p){ let scale = Phaser.Math.FloatBetween(.2, .5); return Math.random() > .9 ? scale * -1 : scale; } }, speed: { min: -100, max: 100 }, ... });
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda