2017-08-08 282 views
0

我一直在通過一個基本的FPS風格的項目(使用我從潛伏在這裏發現的很多建議),我遇到了一個問題。Babylon.js和Cannon.js相機和牆壁碰撞錯誤

下面的代碼,第一個摘https://www.babylonjs-playground.com/#GYZQLK#3

使用箭頭鍵,直到你砸牆向前移動相機,你會看到我的問題。

我想

  1. 有一個自然的跳躍機制,
  2. 有攝像頭,地面,牆壁之間的碰撞檢測等

起初我這只是使用巴比倫的原生.checkCollisions,這非常適用於相機與物體和相機與牆壁的碰撞。但是,我無法讓這個工作適合跳躍。甚至在其他人的教程中,(http://www.html5gamedevs.com/topic/12198-camera-jump/)我沒有得到我想要的結果;在我的電腦上,至少,所有這些操場草圖仍然「懸掛」在跳躍的頂部,直到其他箭頭被按下。

因此,我切換齒輪,並嘗試使用(單獨)Oimo和大炮更強大的物理。我仍然無法讓Oimo工作,出於某種原因(「this.world.worldscale不是一個函數」爲任何人敲響了警鐘?我找不到任何東西),但我用Cannon獲得了不錯的結果。

總之,我有跳躍的工作,但現在碰撞與牆壁都是...時髦。

我很堅持。我沒有看到這種碰撞檢測與地面和相機之間有什麼不同,但顯然有些東西是關閉的。我試過vs其他水平物體(盒子,球體),並將相機的物理冒名頂替者設置爲一個盒子(這使得轉動所有的緊張感)獲得最佳結果。

任何意見或建議?謝謝大家!

回答

0

我在http://www.html5gamedevs.com/topic/32220-collision-with-walls-using-cannon/得到了一些幫助,並認爲我會在這裏發佈我的結果,以防其他人遇到同樣的問題。

簡短的回答是使用動畫來控制跳躍,讓巴比倫物理引擎照顧與相機的碰撞。讓大炮爲其他物體做物理學。

爲了防止相機掛在跳躍的頂部,有一個隱藏/未記錄的屬性(cameraname._needMoveForGravity),您可以將其設置爲true(這聽起來與您想要的相反,但是無論什麼),幫助。

萬一別人用這種掙扎,這裏有一個草圖(有一些額外的行李,我修剪大多數事情出來爲清楚起見,但不是萬能的)

按空格鍵跳躍 http://www.babylonjs-playground.com/#NMPK63

基本上我「M使用從這裏 -

(線程)http://www.html5gamedevs.com/topic/12198-camera-jump/

(運動場)http://www.babylonjs-playground.com/#XN87O

iiceman的例子

以及Wingnut提出的更改camera._needMoveForGravity = true的建議,它可以使相機在跳躍頂部不會「掛起」