math - Three.js 精准地形碰撞

标签 math three.js game-engine collision terrain

一直在使用 WebGL 库 Three.js 开发游戏引擎。我有基本的地形碰撞功能,可以找到用户站立的面孔。使用面顶点的平均或最大 Y 位置是不够的。

我可以使用什么公式来找到物体相对于“站立”在其上的地形面的确切 Y 位置?假设我知道面的四个顶点位置和对象向量位置。

enter image description here

平面是一个由高度图增强的 THREE.PlaneGeometry(2000,2000,128,128)。上图是其中一张面孔。

最佳答案

我不能把代码放在评论里,所以我把它放在这里。 你不需要做数学。让 three.js 为你做。您可以执行以下操作:

var plane = new THREE.Plane();
plane.setFromCoplanarPoints (v1, v2, v3);

// x, y, z: position of your object
var ray = new THREE.Ray (new THREE.Vector3(x, y, z), new THREE.Vector3(0, 1, 0));
var where = ray.intersectPlane (plane);

并且在 Vector3 的“位置”中,您可以使用 y 分量来更改对象的位置。

关于math - Three.js 精准地形碰撞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16077725/

相关文章:

objective-c - iOS - 数学帮助 - 使用捏合手势缩放基础图像需要覆盖图像调整相对的 X/Y 坐标

php - 我可以使用 PHP 随机字符串随机播放获得的不同字符串的数量

java - JAVA 中 C 语言的 logf 相当于什么?

javascript - Three.js 如何使Object3D看起来接近视锥体而不是像 Sprite 一样渲染?

javascript - 三个 Js 在 Y 轴上旋转网格以面向特定矢量位置

java - 在 LibGdx 中绘制网格线的健康方法

compression - 为什么我可以将 "fold"范围内的整数变成二分之一大小而不丢失信息?

javascript - 在 Three.js 中转换基本几何图形

尝试在 OS X Mavericks 中绘制图形时 Java 崩溃

c++ - 使用Qt和c++开发游戏