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

213
Visualizações
Cómo hacer que el sprite gire alrededor de una determinada circunferencia en Phaser 3

Estoy rehaciendo el billar de 8 bolas en Phaser por diversión y estoy en el proceso de configurar el objetivo de la bola blanca/bola blanca. Actualmente tengo el taco girando alrededor del punto central de la bola blanca con el movimiento del ratón:

 create() {
 // Spawn in pool table
 this.setupTable();

 // Initialize cueball
 this.cueball = new Ball(this, 847, 400, 'ballsAndCue', '14ball.png', true);
 
 // Initialize cue
 this.cue = new Cue(this, 800, 400, 'ballsAndCue', 'cue.png', this.cueball);

 // Set cue rotation to follow cursor on cursor movement
 this.input.on('pointermove', function (pointer) {
 this.angle = Phaser.Math.Angle.BetweenPoints(this.cue, pointer);
 this.cue.rotation = this.angle;
 }, this);
}

manifestación

Sin embargo, quiero que el taco gire alrededor de toda la bola blanca. Intenté proporcionar this.cue a Phaser.Actions.RotateAround() / Phaser.Actions.RotateAroundDistance() pero no pude hacer que funcionaran. En cuanto a Phaser 2, tenían un pivote que podía establecer, pero no veo nada similar que no sea setOrigin() , que ya he usado para que la señal gire alrededor de la punta.

Clase de entrada:

 import Phaser from 'phaser';

export default class Cue extends Phaser.GameObjects.Sprite {
 constructor(scene, x, y, spritesheet, sprite, cueball) {
 super(scene, x, y, spritesheet, sprite);
 scene.add.existing(this);
 this.setX(cueball.x);
 this.setY(cueball.y);
 this.setScale(0.7, 1);
 this.setOrigin(0, 0.5);
 
 }
}

¿Cómo puedo conseguir que el taco gire alrededor de la circunferencia de la bola blanca?

almost 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Una solución fácil / rápida es colocar el taco en un contenedor de phaser (con la distancia relativa deseada a la bola) y usar el contenedor como un "pivote" y simplemente girarlo, simplemente establezca la posición del contenedor en la coordenada x e y de el taco .

Aquí una demostración que muestra esta solución:
(Con un movimiento de empuje de taco extra dulce)

La demostración no usa sprites, pero la solución funciona de la misma manera con sprites e imágenes .

 document.body.style = 'margin:0;';

var config = {
 type: Phaser.AUTO,
 width: 536,
 height: 183,
 scene: {
 create
 }
}; 

function create () {
 let ball = this.add.circle(200, 90, 10, 0x6666ff);
 let pivot = this.add.container(200, 90);
 let cue = this.add.rectangle(10, 0, 200, 4, 0xffffff)
 .setOrigin(0, .5);
 
 pivot.add(cue);
 
 // the following two tweens are only to showcase the example
 this.tweens.add({
 targets: pivot,
 rotation: -Math.PI * 2,
 duration: 3000,
 repeat: -1
 });

 this.tweens.add({
 targets: cue,
 x:{
 from: 10,
 to: 80,
 },
 duration: 500,
 repeat: -1,
 yoyo: true
 });
 
}

new Phaser.Game(config);
 <script src="https://cdn.jsdelivr.net/npm/phaser@3.55.2/dist/phaser.js">
</script>

O simplemente puede agregar un píxel transparente (con el desplazamiento deseado) a la imagen, PERO esto es muy limitante y solo es bueno si no necesita mover la señal de ninguna otra manera que rotarla.

almost 4 years ago · Santiago Trujillo 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