【发布时间】:2018-03-07 11:10:07
【问题描述】:
我正在尝试使用 Three.js 构建 FPS,但我无法克服使用 THREE.SceneUtils.detach() 和 THREE.SceneUtils.attach() 时遇到的一些重大故障(老实说,我什至不确定我应该使用他们)
我的机甲角色两边各有两支枪,两支枪之间有足够的空间,一个小敌人可以夹在两支枪之间,永远不会被击中。我能想到的唯一解决方案是让枪“锁定”并在敌人进入相机中心时跟随他们。这解决了我的问题,即敌人可能在枪口之间溜走,但为了解决这个问题,我遵循了 WestLangley 的想法:Three.js Rotate objects inside of moving Object3D to always face the camera
所以现在,我的(转述的)代码如下所示:
autoTarget: function ( target ) {
THREE.SceneUtils.detach( gunRootObject, characterRootObj, scene );
gunRootObject.lookAt( target );
gunRootObject.updateMatrix();
this.direction = new THREE.Vector3( 0, 0, 1 );
this.direction.applyQuaternion( gunRootObject.quaternion );
THREE.SceneUtils.attach( gunRootObject, scene, characterRootObj);
}
这大约有 50% 的时间有效。相对于characterRootObj,另外 50% 的两支枪最终都停留在 [0,0,0]
我做错了什么吗?我是否使用正确的方法来解决我最初的问题?
我将不胜感激任何想法。谢谢!
【问题讨论】:
-
这对你有用吗?
-
@zehelvion 我最终报废了整个系统。我最终做的是假装大量的行为——结果更令人愉快。归根结底是为了大大简化我的代码,同时尝试呈现一种视觉上令人满意的体验,而不是感觉像是“作弊”。
标签: javascript three.js