javascript - Three.js 场景实用程序分离/附加角色武器

标签 javascript three.js

我正在尝试使用 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

,另外 50% 的两把枪最终都停留在 [0,0,0]

我做错了什么吗?我是否使用了正确的方法来解决我最初的问题?

如果有任何想法,我将不胜感激。谢谢!

最佳答案

所以,最后,我采用了完全不同的方法:我意识到我不需要 lookAt() 函数,因为我只需要相对于移动的对象旋转一个固定的对象.所以,现在我正在使用基本的三 Angular 函数来计算我需要根据敌人与相机的距离和其他几个固定点的距离来旋转我的枪的 Angular 。

由于枪支相对于相机处于固定位置,我认为现在就可以了。

关于javascript - Three.js 场景实用程序分离/附加角色武器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30043693/

相关文章:

javascript - 检查浏览器是否支持 `.textContent` 的最佳方法?

node.js - 我们可以在服务器端编辑(位置、比例等)glTF 模型(无需 Three.js)吗?

javascript - 双面半透明纹理的问题

Three.js:在场景角落显示世界坐标轴

javascript - 三个 : Move camera to position inside another object

javascript - 如何在 Three.js 中正确实现 Cook-Torrance 着色?

javascript - Google Maps API 按纬度/经度删除标记

javascript - 有没有可行的方法使用JS触发CSS关键帧动画?

Javascript:对象到 URL 到对象

javascript - ECharts 标签长度过长时标签无法显示