0

这是一个演示

我最近开始使用 three.js(我熟悉 OpenGL 和 C++,所以在 javascript 中这样做并不是一个巨大的学习曲线)我查看了很多 three.js 示例以了解如何进行设置,我看到了该视频 [xttp://www.youtube.com/watch?v=1ENVYLp_NgY] 解释了如何包含 cannon.js,我也想尝试一下 :)

我的目标是创建一个带有阴影和物理的 3D 世界,并带有一个可以与其他对象交互的动画播放器。我选择了这个示例 [xttp://threejs.org/examples/webgl_morphtargets_md2_control.html] 作为起点,因为它已经有动画播放器网格并且播放器控件也差不多,我将 OrbitControls 添加到相机中以便它可以看看周围。

一切似乎都运行良好,除非我尝试将玩家网格连接到物理世界中存在的任何类型的对象(以便他可以击退/推动石块),我想从简单开始以避免任何混淆,因为玩家网格是一个复合对象(导入 md2),所以我只使用基本的球体形状,但如果我尝试更新物理世界中对象的坐标,以便玩家网格移动时它会跟随,玩家网格动画但不移动(所以我在 update() 函数中取消了这些行的注释)。

      /**
       * Problem: This prevents player from moving :(
       **/
      player.position.copy( playerMesh.root.position );
      player.quaternion.copy( playerMesh.root.quaternion );
      player.velocity.copy( new THREE.Vector3() );

md2播放器网格对象中还涉及一个称为“陀螺仪”的东西,它似乎移动了灯光位置,以便它与播放器运动相协调,但我不确定这是怎么发生的(陀螺仪部分不是我理解的东西,但我'不确定这是否也是问题的一部分)。

代码仓库托管在github 上

更新:已修复,请参阅 github 上的提交:)

4

1 回答 1

0

提交并推动了修复:在这里(我需要稳定球体,我用 x、y 和 z 浮动而不是使用 vector3.copy 方法更新了位置),可能不是实现此问题的正确方法,但它现在可以工作.

于 2013-05-07T10:36:09.610 回答