Dis*_*ame 7 javascript three.js
碰撞检测有很多很好的东西,例如问题中的trix.colliders或代码片段,但实际上大多数东西都是旧的(一些函数如multiplyVector3被更改而其他函数被删除.我有一个Object3D(角色模型)和一个世界(3D模型:汽车,树木,建筑物等).我可以使用箭头键移动角色(在渲染循环中通过translateX/Y移动它).
我想要的是角色模型和其他一切之间的碰撞检测(除了地面和其他一些).所以我需要在Object3D(Character)和WorldObjects [](所有对象)之间进行碰撞检测.
那么,现在有几种方法可以获得想要的结果,这是执行此操作的最佳(快速和可读)方式?现在问题(可能)如果它起作用:当角色与其他任何东西发生碰撞时,我怎么能阻止他可以向这个方向移动但是他可以向后,向右或向左移动?
Wil*_*ilt 12
您可以使用对象的边界框来检测碰撞.边界框属于类型,THREE.Box3
并且具有有用的方法isIntersectionBox
,containsBox
或者containsPoint
在您想要检测碰撞时满足您的所有需求.
使用它们就像这样简单:
var firstObject = ...your first object...
var secondObject = ...your second object...
firstBB = new THREE.Box3().setFromObject(firstObject);
secondBB = new THREE.Box3().setFromObject(secondObject);
var collision = firstBB.isIntersectionBox(secondBB);
Run Code Online (Sandbox Code Playgroud)
collision
如果盒子相互碰撞/撞击将是真实的.这会让您对如何使用边界框有一个印象.
您也可以查看此示例.我认为这对你非常有用.
你也许应该检查Physijs库,这是一个three.js的插件.
您可能希望跟踪Stackoverflow上有类似问题的人.
归档时间: |
|
查看次数: |
7769 次 |
最近记录: |