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

131
Vistas
Enemy don not follow Player. Phaser3

Can you please tell me where I made mistake in code ? why my enemy do not follow player? I am not sure if I defined correct followPlayer() . 'SceneB' is second Scene, can be this problem ? Console.log is clear . I am using EasyStar.js library. Game is working , everything is running but enemy is frozen .
Thank you


 class SceneB extends Phaser.Scene {
    constructor(){
      super('SceneB')
    }
   //..


create(){

finder = new EasyStar.js()
    let grid = []
    let tile 
    for(let y = 0; y < map.height; y++) {
         let col = []
      for(let x = 0; x < map.width; x++) {
         tile = map.getTileAt( x, y )
         col.push( tile.index)
      }
      grid.push(col)
    }

    finder.setGrid(grid)
  
    let tileset = map.tilesets[0]
    let properties = tileset.tileProperties
    let acceptableTiles = []

    for (let i = tileset.firsgid - 1;i < tiles.total;i++) {
       if(properties[i].collides == false ) {
         acceptableTiles.push ( i+1)
       }
    }

       finder.setAcceptableTiles( acceptableTiles) 

}


update(){}

followPlayer(player,evil) {
      

      let toX = this.player.x
      let toY = this.player.y

      let fromX = this.evil.x
      let fromY = this.evil.y

      finder.findPath(fromX, fromY, toX, toY, function(path) {
         console.log(path)
         this.moveCharacter(path)
       })

       finder.calculate()
    }


      moveCharacter(path){
        let mytimeline = this.scene.tweens.createTimeLine()    

        for(let i = 0;i < path.length - 1;i++) {
          let ex = path[i + 1].x
          let ey = path[e + 1].y

            mytimeline.add({
             targets: this.player,
            x:{value: ex * map.tileWidth, duration: 200},
            y:{value: ey * map.tileHeight, duration: 200}
          })
        }
        mytimeline.play()
      }

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

0

followPlayer is never getting called, so the logic will never actually trigger.

You'll want to call this somewhere in your code, depending upon how you've implemented your player logic.

You may also want to check inside finder.findPath that path !== null, and do something if it is, as that could also cause an issue.

finder.findPath(fromX, fromY, toX, toY, function(path) {
 console.log(path);
 if (path !== null) {
     this.moveCharacter(path);
 }
});
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