如何控制3 .js播放器网格(md2)时,使用大炮.js物理

How to control three.js player mesh (md2) when using cannon.js physics?

本文关键字:js 物理 播放器 何控制 控制 网格 md2      更新时间:2023-09-26

这里是一个演示

我最近开始使用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]作为起点,因为它已经有了动画播放器网格,播放器控制也差不多了,我给相机添加了轨道控制,这样它就可以环顾四周了。

一切似乎工作得很好,除了当我试图联系玩家网的任何类型的对象存在于物理世界(这样他可以击退/推石块),我想开始简单,以避免任何混淆,因为玩家网的一个复合对象(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上

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

提交并推动修复:这里(我需要稳定球体,我更新了x, y &Z浮动,而不是使用vector3。复制方法),可能不是正确的方式来实现这一点,但它现在工作。