【发布时间】:2013-12-09 10:03:51
【问题描述】:
由于制作了一些简单的多人游戏,我选择了 THREE.js 来实现浏览器端的图形。在浏览器上一切正常。
然后我想: 服务器必须检查大多数用户操作。所以我需要在服务器上拥有世界副本,与用户交互,然后将其状态返回给用户。
所以,由于已经为客户端编写了一段优秀的代码 - 我只是让它与 node.js 兼容并继续前进。 (良好的碰撞检测,可以使用object.geometry - 这正是我想要的)
因此,碰撞检测代码停止工作。在服务器端 Raycaster 退出 字符串
} else if ( object instanceof THREE.Mesh ) {
var geometry = object.geometry;
// Checking boundingSphere distance to ray
if ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();
sphere.copy( geometry.boundingSphere );
sphere.applyMatrix4( object.matrixWorld );
if ( raycaster.ray.isIntersectionSphere( sphere ) === false ) {
return intersects; // _HERE_
}
这会发生,因为object.matrixWorld 是身份矩阵。
但是进行了对象初始化。 mesh.position 和 mesh.rotation 在服务器和客户端上是相同的(在浏览器中,raycaster 是一种魅力);
我想,object.matrixWorld 会在 renderer.render(self.three_scene, self.camera); 的某个地方更新。但当然,这不是我想在服务器端做的。
所以问题是:如何在服务器端的每个模拟滴答中更新object.matrixWorld?
或者,也许是建议,如果有其他方法可以得到与我想要的相似的东西。
【问题讨论】:
标签: node.js three.js collision-detection