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

169
Vistas
Phaser 3: Clonar Sprite al hacer clic y arrastrar inmediatamente

Tengo un sprite que funciona como un botón, pero cuando lo presionas, se duplica y te permite arrastrar el duplicado. Casi lo tengo funcionando, sin embargo, actualmente debe hacer clic primero para crear un duplicado y solo puede arrastrar después de un segundo clic. Me gustaría poder hacer clic una vez e inmediatamente poder arrastrar.

Es importante que se arrastre el DUPLICADO, a diferencia del original, ya que el original tiene todas las funciones de clic.

 create() { sprite = scene.add.sprite(0,0, "clean", "showerhead_0000"); sprite.setInteractive({ useHandCursor: true }); sprite.on('pointerdown', () => { dragTool(scene, options[idx], sprite); }); this.input.on('drag', function(pointer, gameObject, dragX, dragY) { gameObject.x = dragX; gameObject.y = dragY; }); this.input.on('dragend', function(pointer, gameObject) { gameObject.destroy(); gameState.clean_cursor = false; }); } function dragTool(scene, option, sprite){ let activePointer = scene.input.activePointer; let clone = scene.add.sprite(sprite.x,sprite.y, sprite.texture.key, sprite.frame.name); gameState.clean_cursor = clone; gameState.clean_cursor.setInteractive(); scene.input.setDraggable(gameState.clean_cursor); }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Tal vez me estoy perdiendo algo, pero sería una solución simple.

  1. crear dos imágenes/botones, uno normal y otro como marcador de posición
    • el marcador de posición será cubierto por el original, excepto cuando se arrastre
  2. al arrastrar, simplemente arrastre el botón normal
  3. al final de arrastrar restablecer la posición del botón normal

esto debería funcionar igual, y no es tan complicado.

Aquí un ejemplo de trabajo:

 let Example = { preload () { this.load.spritesheet('brawler', 'https://labs.phaser.io/assets/animations/brawler48x48.png', { frameWidth: 48, frameHeight: 48 }); }, create () { let buttonPos = { x:0, y:0}; let buttonPlaceholder = this.add.image(buttonPos.x, buttonPos.y, 'brawler', ).setOrigin(0, 0); let button = this.add.image(buttonPos.x, buttonPos.y, 'brawler', ).setOrigin(0, 0); this.isDragging = false; button.setInteractive({ useHandCursor: true }); this.input.setDraggable(button); this.input.on('drag', function(pointer, gameObject, dragX, dragY) { gameObject.x = dragX; gameObject.y = dragY; }); this.input.on('dragend', function(pointer, gameObject) { gameObject.x = buttonPos.x; gameObject.y = buttonPos.y; }); } } const config = { type: Phaser.AUTO, width: 400, height: 200, scene: [ Example ] }; const game = new Phaser.Game(config);
 <script src="https://cdn.jsdelivr.net/npm/phaser@3.55.2/dist/phaser.js"></script>

...esto debería ser aún más eficaz que crear y destruir imágenes/botones...

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