我正在尝试使用 Three.js 构建 FPS,但我无法克服使用 THREE.SceneUtils.detach()
和 THREE 时遇到的一些主要故障.SceneUtils.attach()
(老实说,我什至不确定我应该使用它们)
我的机甲 Angular 色两侧各有 2 支枪,两支枪之间有足够的空间,一个小敌人可以夹在两支枪之间而不会被击中。我能想到的唯一解决办法是让枪支“锁定”并在敌人进入摄像机中心时跟随他们。这解决了我的问题,即敌人可能会从 Guzzle 之间溜走,但为了解决这个问题,我遵循了 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
我做错了什么吗?我是否使用了正确的方法来解决我最初的问题?
如果有任何想法,我将不胜感激。谢谢!
最佳答案
所以,最后,我采用了完全不同的方法:我意识到我不需要 lookAt()
函数,因为我只需要相对于移动的对象旋转一个固定的对象.所以,现在我正在使用基本的三 Angular 函数来计算我需要根据敌人与相机的距离和其他几个固定点的距离来旋转我的枪的 Angular 。
由于枪支相对于相机处于固定位置,我认为现在就可以了。
关于javascript - Three.js 场景实用程序分离/附加角色武器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30043693/