我一直在努力解决这种碰撞反应,直到现在。我以为我会请你们提供一些指导。
http://jsbin.com/qoyuciti/1编辑链接:http : //jsbin.com/qoyuciti/1/edit?html(只是知道您不能在jsbin编辑模式下使用移动键(据我所知)知道))
这本JSBin显示了我目前所拥有的。我可以四处走动,当我撞到箱子时,我不会走过低谷,我会滑向箱子。有两个问题:
我的方法的快速解释
一旦我与盒子相交,用户便开始走动,我开始测试球体前方180度圆锥中的相交(用户前进的方向)。一旦找到一个空位,它将把玩家放在那里。
如果有人有更好的方法,请告诉我。当我解释我的代码时,这看起来可能会更高效,但请告诉我:)
提前致谢!
我已经解决了我遇到的问题。这是任何需要它的人的代码:)
var intersect = box.intersectsPoint(player.position);
if (intersect) {
var x = prevX,
z = prevZ,
slideSpeed = speed * 0.7;
for (var angle = 0; angle > -90; angle -= 1) {
x = prevX - Math.sin((direction - angle) * Math.PI / 180) * slideSpeed;
z = prevZ - Math.cos((direction - angle) * Math.PI / 180) * slideSpeed;
var intersect = box.intersectsPoint(new BABYLON.Vector3(x, player.position.y, z), true);
if (!intersect) {
break;
}
x = prevX - Math.sin((direction + angle) * Math.PI / 180) * slideSpeed;
z = prevZ - Math.cos((direction + angle) * Math.PI / 180) * slideSpeed;
var intersect = box.intersectsPoint(new BABYLON.Vector3(x, player.position.y, z), true);
if (!intersect) {
break;
}
}
player.position.x = x;
player.position.z = z;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句