【问题标题】:Babylon.js and Cannon.js camera and wall collisions bugsBabylon.js 和 Cannon.js 相机和墙壁碰撞错误
【发布时间】:2017-08-09 22:46:31
【问题描述】:

我一直在研究一个基本的 FPS 风格的项目(使用了我从潜伏在这里找到的很多建议)并且遇到了一个问题。

这是代码,首先-https://www.babylonjs-playground.com/#GYZQLK#3

使用箭头键向前移动相机直到撞到墙上,你就会看到我的问题。

我正在尝试

  1. 具有自然的跳跃机制,并且
  2. 在摄像头、地面、墙壁等之间进行碰撞检测。

一开始我只是使用 Babylon 的原生 .checkCollisions 来做这个,它非常适用于相机与物体以及相机与墙壁的碰撞。但是,我无法让它在跳跃时正常工作。即使按照其他人的教程,(http://www.html5gamedevs.com/topic/12198-camera-jump/) 我也没有得到我想要的结果;至少在我的电脑上,所有这些操场草图仍然“挂”在跳跃的顶部,直到按下其他箭头。

所以,我换了个方向并尝试(单独)使用 Oimo 和 Cannon 来获得更强大的物理效果。出于某种原因,我仍然无法让 Oimo 工作(“this.world.worldscale 不是一个函数”为任何人敲响了警钟?我在这方面找不到任何东西)但我在 Cannon 上取得了不错的成绩。

简而言之,我已经完成了跳跃,但现在与墙壁的碰撞都......很时髦。

我很困惑。我看不出这种碰撞检测与地面和相机之间的碰撞检测有何不同,但显然有些不对劲。我已经尝试过与其他水平对象(盒子、球体)相比,并且将相机的物理冒名顶替者设置为盒子(这会使所有的转动变得紧张),效果最好。

有什么建议或想法吗?谢谢大家!

【问题讨论】:

    标签: collision-detection game-physics babylonjs cannon.js


    【解决方案1】:

    我在http://www.html5gamedevs.com/topic/32220-collision-with-walls-using-cannon/ 得到了一些帮助,并想我也会在这里发布我的结果,以防其他人遇到同样的问题。

    简短的回答是使用动画来控制跳跃,让巴比伦物理引擎处理与相机的碰撞。让 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 的建议,这成功地防止了相机在跳跃顶部“挂起”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-26
      • 1970-01-01
      • 2016-04-24
      • 2015-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-21
      相关资源
      最近更新 更多