我一直在胡闹这种碰撞反应很久了。我想请你们指导一下。
http://jsbin.com/qoyuciti/1编辑链接:http://jsbin.com/qoyuciti/1/edit?html (只知道您不能在jsbin编辑模式下使用移动键(据我所知))
这个JSBin展示了我目前所拥有的一切。我可以四处走动,当我撞到盒子的时候,我不会陷入低谷,我会滑翔在盒子里。有两个问题:
--对我的方法的快速解释
用户开始行走,一旦我与盒子相交,我就开始测试球体前面180度的圆锥体中的相交点(用户正朝哪个方向)。一旦它找到一个空位,它就会把玩家放在那里。
如果有人有更好的方法,请告诉我。当我解释我的代码时,这看起来可能会更有效,但是请告诉我:)
提前感谢!
发布于 2014-05-05 19:15:34
我已经解决了我遇到的问题。以下是任何需要它的人的代码:)
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;
}发布于 2014-05-05 15:33:51
您也许可以使用内部碰撞系统,但创建一个假的自由,并添加您的球体作为孩子的相机。然后,您可以使用键移动相机,并且自动地为您计算碰撞。
否则,还可以使用专用函数scene._getNewPosition直接使用碰撞引擎。
https://stackoverflow.com/questions/23456836
复制相似问题