2015-08-26 28 views
0

我一直在嘗試使用javascript(大部分是在服務器上,使用Node.js)製作多人遊戲;我想要做的核心機制之一是,玩家將能夠設計自己的戰鬥風格(直到他們如何擺動劍等)。問題在於我無法找到限制球員動作的簡單方法。CANNON.js:檢查一個身體是否被約束

我首先嚐試着寫一種方法來檢查然後夾住玩家的風格,這樣看起來並不像他們同時打破每一個肢體,但那並不真正奏效。然後我發現了精彩的CANNON.ConeTwistConstraint,但在查看完文檔後,我發現CANNON.js的約束似乎沒有任何內置函數來測試兩個物體是否超出約束的限制。我想過讓我的遊戲只是在單獨的模擬中創建對象,並檢查一個對象是否正在施加一個力,但我不知道如何去做這件事,或者如果有更好的方法。

有沒有簡單/更容易解決我的問題?如果不是,那麼執行上述操作最少的CPU密集型方法是什麼?

回答

0

您可以手動檢查ConeTwistConstraint是否達到其限制。如果你看看方法CANNON.ConeEquation.prototype.computeB,你可以看到它使用cos()和一個點積來計算約束違規,「g」。你可以簡單地使用下面的代碼。

var eq = coneTwistConstraint.coneEquation; 
var g = Math.cos(eq.angle) - eq.axisA.dot(eq.axisB); 
if(g > 0) { 
    // Constraint limit exceeded 
} else { 
    // Constraint is within limits 
} 

使用相同的策略,您可以檢查是否超過扭轉限制。由於扭曲方程是CANNON.RotationalEquation,代碼變爲:

var eq2 = coneTwistConstraint.twistEquation; 
var g2 = Math.cos(eq2.maxAngle) - eq2.axisA.dot(eq2.axisB);