Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

161
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda