Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

237
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!