BabylonJS:碰撞检测
BabylonJS: Collision detection
我一直在摆弄这个碰撞响应很久了。我想我应该请你们给点指导。
http://jsbin.com/qoyuciti/1编辑链接:http://jsbin.com/qoyuciti/1/edit?html(只知道你不能在jsbin编辑模式下使用移动键(据我所知))
这个JSBin显示了我现在所拥有的。我可以四处移动,当我碰到盒子时,我不会滑过盒子。有两个问题:
- 向左滑动,一切正常,向右滑动,开始"跳跃"; 有时候在碰撞大约20秒后,球体会穿过盒子…我想这可能与我右滑时所经历的"跳跃"有关。
快速解释我的方法
用户开始行走,当i与方框相交时,i开始测试球体前方180度圆锥体的相交(用户前进的方向)。一旦它找到一个空的位置,它就会把玩家放在那里。
如果有人有更好的方法,请告诉我。当我解释我的代码,它似乎可以更有效,但让我知道:)提前感谢!
你也许可以使用内部碰撞系统,但创建一个假的自由相机,并添加你的球体作为相机的子。然后你可以使用按键移动摄像机,babylonjs会自动为你计算碰撞
否则,您也可以使用私有函数场景。直接使用碰撞引擎
我已经修复了我遇到的问题。这里的代码供任何需要的人使用:)
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;
}
相关文章:
- 逐像素碰撞检测弹球
- 砖块和球之间的碰撞检测(使用数字数组)
- 为什么我应该使用带有碰撞检测的四叉树
- 具有多个块的html5画布碰撞检测
- D3js地图标记碰撞检测
- javascript中两个正方形之间的碰撞检测
- 使用canvas+javascript进行2D碰撞检测
- 为什么我的碰撞检测在 Phaser 中不起作用
- 方向碰撞检测
- 圆圈碰撞检测 HTML5 画布
- FPS 游戏中的碰撞检测使用三个.js
- Javascript - 如何设置碰撞检测系统
- 三.js使用光线投射优化碰撞检测
- 对 2 个对象进行碰撞检测
- 如何将碰撞检测添加到我的 JavaScript 游戏中
- 使用边界球体进行碰撞检测
- 碰撞检测问题;对某些条件的奇怪反应
- JavaScript:碰撞检测不起作用
- 碰撞检测在我的游戏中不准确
- BabylonJS:碰撞检测