Enable mouse pointer with FPS movment

Hi is there any way I want to disable pointer lock in FPS movement as an example. I actually having this but the issue is mouse is not moving 360 like it only stuck in 90 angle for left and right.

var FirstPersonMovement = pc.createScript('firstPersonMovement');

FirstPersonMovement.attributes.add('camera', {

    type: 'entity',

    description: 'Optional, assign a camera entity, otherwise one is created'

});

FirstPersonMovement.attributes.add('power', {

    type: 'number',

    default: 2500,

    description: 'Adjusts the speed of player movement'

});

FirstPersonMovement.attributes.add('lookSpeed', {

    type: 'number',

    default: 0.25,

    description: 'Adjusts the sensitivity of looking'

});

// initialize code called once per entity

FirstPersonMovement.prototype.initialize = function() {

    this.force = new pc.Vec3();

    this.eulers = new pc.Vec3();

   

    var app = this.app;

    this.camera.setLocalEulerAngles(0, 81.38, 0);

    // Listen for mouse move events

    app.mouse.on("mousemove", this._onMouseMove, this);

    // when the mouse is clicked hide the cursor

    // app.mouse.on("mousedown", function () {

    //     app.mouse.enablePointerLock();

    // }, this);            

    // Check for required components

    if (!this.entity.collision) {

        console.error("First Person Movement script needs to have a 'collision' component");

    }

    if (!this.entity.rigidbody || this.entity.rigidbody.type !== pc.BODYTYPE_DYNAMIC) {

        console.error("First Person Movement script needs to have a DYNAMIC 'rigidbody' component");

    }

};

// update code called every frame

FirstPersonMovement.prototype.update = function(dt) {

    // If a camera isn't assigned from the Editor, create one

    if (!this.camera) {

        this._createCamera();

    }

   

    var force = this.force;

    var app = this.app;

    // Get camera directions to determine movement directions

    var forward = this.camera.forward;

    var right = this.camera.right;

       

    // movement

    var x = 0;

    var z = 0;

    // Use W-A-S-D keys to move player

    // Check for key presses

    if (app.keyboard.isPressed(pc.KEY_A) || app.keyboard.isPressed(pc.KEY_Q)) {

        x -= right.x;

        z -= right.z;

    }

    if (app.keyboard.isPressed(pc.KEY_D)) {

        x += right.x;

        z += right.z;

    }

    if (app.keyboard.isPressed(pc.KEY_W)) {

        x += forward.x;

        z += forward.z;

    }

    if (app.keyboard.isPressed(pc.KEY_S)) {

        x -= forward.x;

        z -= forward.z;

    }

    // use direction from keypresses to apply a force to the character

    if (x !== 0 && z !== 0) {

        force.set(x, 0, z).normalize().scale(this.power);

        this.entity.rigidbody.applyForce(force);

    }

    // update camera angle from mouse events

    this.camera.setLocalEulerAngles(this.eulers.y, this.eulers.x, 0);

};

FirstPersonMovement.prototype._onMouseMove = function (e) {

    // If pointer is disabled

    // If the left mouse button is down update the camera from mouse movement

  // if (pc.Mouse.isPointerLocked() || e.buttons[0]) {

        this.eulers.x -= this.lookSpeed * e.dx ;

        this.eulers.y -= this.lookSpeed * e.dy;

    //}            

};

FirstPersonMovement.prototype._createCamera = function () {

    // If user hasn't assigned a camera, create a new one

    this.camera = new pc.Entity();

    this.camera.setName("First Person Camera");

    this.camera.addComponent("camera");

    this.entity.addChild(this.camera);

    this.camera.translateLocal(-6, 0.5, 0);

};

here is the code which im using .Need help thanks :slight_smile:

Hi @regeme,

Can you post your project with the issue, so it is easier to debug your script?
I changed the FPS tutorial project to run without mouse locking, here it is:
https://playcanvas.com/project/917790/overview/first-person-shooter-starter-kit

1 Like

thanks for the reply the issue is your mouse movement is not working properly as we check in fps movement tutorial to lock the mouse pointer .I need this

I want basically movement of click +drag with mouse just we see in FPS movement with onmouseMove.

Do you want the mouse pointer to be locked? What issue are you facing with it? Can you post a reproducible bug in a separate project with the above script?

Do yo want mouse control similar to this? 360 lookaround camera | Learn PlayCanvas

1 Like

sorry for the late reply yeah I checked that and got the solution Thanks