我一直在完成一个基本的FPS式项目(使用我从潜伏在这里找到的很多建议)并且我遇到了一个问题。
以下是代码,首先是https://www.babylonjs-playground.com/#GYZQLK#3
使用箭头键向前移动相机,直至撞到墙壁,然后你就会看到我的问题。
我正在尝试
起初我只是使用巴比伦的原生.checkCollisions做了这个,它非常适用于相机与物体和相机与墙壁碰撞。但是,我无法让它适合跳跃。即使按照其他的教程,(http://www.html5gamedevs.com/topic/12198-camera-jump/)我也没有得到我想要的结果;在我的电脑上,至少,所有这些游乐场的草图仍然“悬挂”在跳跃的顶部,直到按下其他箭头。
所以,我换了齿轮并尝试使用(单独)Oimo和Cannon来获得更强大的物理效果。我仍然无法让Oimo工作,出于某种原因(“this.world.worldscale不是一个功能”为任何人敲响了铃声?我找不到任何东西)但是我已经用Cannon得到了不错的结果。
总之,我有跳跃的工作,但现在碰撞与墙壁都是......时髦。
我很困惑。我没有看到这种碰撞检测与地面和相机之间有什么不同,但有些东西显然不合适。我已经尝试过与其他水平物体(盒子,球体)相比,并且将相机的物理冒名顶替设置为一个盒子(这会让所有人感到紧张),效果最好。
有任何建议或想法吗?谢谢大家!
答案 0 :(得分:0)
我在http://www.html5gamedevs.com/topic/32220-collision-with-walls-using-cannon/得到了一些帮助,并认为我会在这里发布我的结果,以防其他人遇到同样的问题。
简短的回答是使用动画来控制跳跃,让Babylon物理引擎处理与相机的碰撞。让Cannon为其他物体做物理学。
为了防止相机悬挂在跳跃的顶部,有一个隐藏/未记录的属性(cameraname._needMoveForGravity),你可以设置= true(这听起来与你想要的相反,但无论如何)这有帮助。
以防万一其他人正在努力解决这个问题,这是一个草图(有一些额外的包袱,为了清晰起见,我修剪了大部分内容但不是一切)
按空格键跳转 http://www.babylonjs-playground.com/#NMPK63
基本上我从这里使用iiceman的例子 -
(主题)http://www.html5gamedevs.com/topic/12198-camera-jump/
(游乐场)http://www.babylonjs-playground.com/#XN87O
还有Wingnut关于改变camera._needMoveForGravity = true的建议,它成功地使相机不会在跳跃的顶部“悬挂”