首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我怎样才能实现精确的功能,就像三个of中的pointerlock示例,而不是鼠标,而是以编程方式移动?

我怎样才能实现精确的功能,就像三个of中的pointerlock示例,而不是鼠标,而是以编程方式移动?
EN

Stack Overflow用户
提问于 2016-08-12 16:07:34
回答 1查看 569关注 0票数 0

如何实现THREE.js后锁控件示例功能,而不是鼠标移动,而是以编程方式移动(加速度计设备中的值)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-12 17:56:53

THREE.PointerLockControls (下一步:模块)是这样工作的:

  • 模块制作了一个结构yawObject -> pitchObject -> camera (pitchObject是yawObject的子类,摄像机是pitchObject的子类)。
  • 您可以在场景中添加yawObject (您可以从带有yourControls.getObject()函数的模块获得)(以保持转换的更新)。
  • 模块添加了'mousemove‘事件侦听器,并在移动鼠标时更新yawObject.rotation.y和vochObject.rotation.x(如果yourControls.enabled !== false. )。
  • 接下来,如果您对实际锁定游标感兴趣,可以在客户端代码中这样做,就像在示例中那样。
  • 要更新您的相机位置,您可以操纵yawObject的位置(yourControls.getObject().position)。

因此,要在没有鼠标的情况下操作控件,您可以这样设置模块:

代码语言:javascript
复制
camera.position.set(0, 0, 0);
camera.rotation.set(0, 0, 0); // THREE.PointerLockControls does this too

var myControls = new THREE.PointerLockControls(camera);

var controlsObject = myControls.getObject();

controlsObject.position.set(myEntryX, myEntryY, myEntryZ); // set starting point
controlsObject.rotation.y = myEntryYaw; // rotate yaw obj
controlsObject.children[0].rotation.x = myEntryPitch; // rotate pitch obj

scene.add(controlsObject);

然后保持myControls.enabled = false操纵controlsObject.positioncontrolsObject.rotation.ycontrolsObject.children[0].rotation.x

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38922281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档