Jump to content

Using LockConstraint to make a P2 sprite draggable


Eagers
 Share

Recommended Posts

Hello all and thanks ahead of time for any help.

This example has a block you move around with the arrow keys and it bumps into other objects: https://phaser.io/examples/v2/p2-physics/contact-events

I am trying to make the block draggable by a mouse (or touch).

I added this code to create() to create a transparent copy of the box (for visualization/testing purposes, this sprite would eventually be invisible)

     input_body = game.add.sprite(500, 200, 'block');
     game.physics.p2.enable(input_body, false);
     input_body.body.setCollisionGroup(	game.physics.p2.createCollisionGroup() );
	 input_body.alpha = 0.5;

And then I added this code to update() to make my transparent box follow the mouse point, or last touch point

  input_body.body.x = game.input.x;
  input_body.body.y = game.input.y;

And then I added this code to update() to make the block follow my mouse on drag. 

if (game.input.activePointer.isDown) {
    if (constraint_count == 0) {
      input_constraint = game.physics.p2.createLockConstraint(input_body, block.body);
      constraint_count = 1;
    } else if (constraint_count == 1) {
      game.physics.p2.removeConstraint(input_constraint);
      constraint_count = 0;
    }
  } else {
    if (constraint_count == 1) {
      game.physics.p2.removeConstraint(input_constraint);
    }
    constraint_count = 0;
  }

And it works!!...but what happens is my mouse pointer and my transparent block (input_body) get out of sync.  And the input_body ends up sort of halfway between the block and the mouse pointer.  Letting go of the mouse (which removes the constraint) leaves the input_body at the same offset from the mouse pointer.  Once I click, it never lines up again.

I'm guessing I'm missing something with the LockConstraint, and the block is acting like an achor weighing down my drag.  But I'm not sure how to fix it.

Thanks for any and all help!

 

 

Link to comment
Share on other sites

 Share

  • Recently Browsing   0 members

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