Jump to content

Setting sprite.body.x won't update draw until I click and drag the scene


hellos3b
 Share

Recommended Posts

I have a strange issue, which I wonder if it's a bug or some optimization in phaser that's not getting triggered

 

I have a unit I click & select, and when I click another tile I set his (x,y) to the tile

this.entity.updatePosition(tile.getX(), tile.getY());// entityupdatePosition: function(x, y) {            if (this.sprite) {                this.sprite.body.x = x;                this.sprite.body.y = y - 64;            }        },

The numbers/values are right in console (I see them get updated), but until I hold down the mouse and drag the view, he doesn't change. I'm using arcade physics

 

I'm not using the Phaser camera, I wrote my own input handler, and it doesn't do anything different than the above code does.

 

Example:

  if (this.game.input.activePointer.isDown) {                if (this.game.origDragPoint) {                    // move the camera by the amount the mouse has moved since last update                    var movex = this.game.origDragPoint.x - this.game.input.activePointer.position.x;                    var movey = this.game.origDragPoint.y - this.game.input.activePointer.position.y;                    this.tileManager.drag({                        x: movex,                        y: movey                    });                 }}

and all tileManager.drag does is iterate through active tiles and update their positions

// tileManager.drag -> tileManager.updateTiles() -> for (var k in view) -> view[k].drag()drag: function() {            if (this.sprite) {                this.sprite.body.x = this.getX();                this.sprite.body.y = this.getY();            }             if (this.entity) {                this.entity.updatePosition(this.getX(), this.getY());            }                        // Check if tiles are in scope, otherwise destroy            this.checkRender();        },

Is there a way to force the sprite to update the body manually? This is the second time I've ran into this issue.

 

The first time was when I wrote a centerCameraOnTile(x,y), if I set it to move across the map it worked, but if I moved it only a couple tiles up I wouldn't see the tiles move unless I clicked and dragged. That one was fixed by running a blank drag event on game.update(), which has no logic behind it but it seemed to work

this.tileManager.drag({x:0,y:0});
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...