不久之前我问了一个关于how to make a nice collision effect的问题,但我得到的唯一答案是“不要试图重新发明,使用其他东西”,但这不是,我需要的东西:)
所以,我正在写这个2d-top-view train sim,这里的目标是在不使用第三方解决方案的情况下从头开始编写“简单”引擎。这是我的第一个项目,我只是在学习。如果我的“引擎”有任何全局缺陷阻止我实现我想要的东西,请指出它,并解释错误,或至少在哪里找到有关此主题的信息!
我以前的冲突计算代码是:
function moveCollided(){
for (var i = 0; i < trainCount; i++) {
var banged = calcCollision(window["train_"+i]);
//console.log(banged);
if (window["train_"+i].hit){
window["train_"+i].speed -= (window["train_"+i].speed/3);
for (var j = 0; j < banged.length; j++) {
window["train_"+banged[j]].speed += calcSpeedIncrement(window["train_"+i],window["train_"+banged[j]]);
}
}
}
setTimeout(moveCollided, 15);
}
现在我正在尝试其他一些东西,但它仍然无法正常工作。据我所知,现在问题是逐个计算每个实体。当然,Javascript是一种脚本语言,但由于已经有几个物理引擎写在其上,显然是我找不到的解决方案。
我并不是真的要求解决方案,因为之前没有人能够提供解决方案,但至少建议阅读有关此主题的内容。
如果有人仍想帮助解决问题,请从上面的链接查看游戏的源代码。当然,有比我在这里给出的代码更多的代码。如有必要,我会向您提供有关代码的解释,只需询问:)
对不起,这个问题更像是一声求救,但我一直在代码中苦苦挣扎一周并绝望