如何使相机具有碰撞检测Physi.js第一人称射击游戏

时间:2017-02-26 20:26:15

标签: camera three.js collision-detection physijs pointerlock

项目前提

我的THREE.js游戏的想法是玩家通过迷宫般的物体导航并到达出口。我不仅需要对立方体和球体进行碰撞检测,还需要从Blender导入的模型。我想过使用RayCasting但我决定选择Physi.js。

问题

,想法是给相机一个"身体"这样当玩家只是一个相机对象时,玩家就无法通过墙壁或其他物体。但是,我的玩家"一旦我给它THREE.PointerLockControls( player ),对象似乎就失去了所有的Physi.js属性。我正在做的是创建一个Physijs.BoxMesh,播放器,并添加相机。之后我通过了#34;播放器"对象我的setupControls()函数。

        var geometry = new THREE.BoxGeometry( 500, 500, 500 );
        var material = new THREE.MeshPhongMaterial( {color: 0x0000FF} );
        player = new Physijs.BoxMesh(geometry, material, 1, {restitution: .9, friction: .1});

        scene.add(camera);
        scene.add(player);
        player.add(camera);


        //give player control of THIS mesh.
        setupControls(player);

控件按预期工作,我可以控制播放器网格,相机粘在它上面创建一个FPS视图,但是当我这样做时,我仍然可以移动墙壁和其他物体。我甚至将相机移回Z位置以确认发生了什么,我可以看到玩家网格只是穿过物体而不是受阻或敲击它们。

方案?

如果我删除setupControls(播放器),那么Physi.js物理开始在播放器网格上工作!它将从重力下降,反弹和一切。它看起来很酷,但现在我无法控制它!好像我只能有一个或另一个哈哈。那么有谁知道我能做些什么来解决这个问题呢?我甚至可以提出什么?我是THREE.js的新手,所以非常感谢任何输入!

0 个答案:

没有答案