containsPoint
函数是Yuka js库中的一个方法,用于判断一个点是否在一个AABB盒子中。该方法可以非常方便地检查某个碰撞体是否与玩家鼠标位置重合。
该函数的用法非常简单。你只需要传入一个表示点的向量,即三维空间中的一个点,以及表示AABB盒子的最小和最大点坐标,并将结果返回。
/**
* 判断一个点是否在一个AABB盒子中。
* @param {Vector3} point - 要检查的点。
* @param {Vector3} min - AABB盒子的最小点。
* @param {Vector3} max - AABB盒子的最大点。
* @return {Boolean} 如果点在盒子里则返回true,否则返回false。
*/
function containsPoint(point, min, max) {
// 计算点在X,Y,Z轴上是否在AABB盒子内
const x = (point.x >= min.x) && (point.x <= max.x);
const y = (point.y >= min.y) && (point.y <= max.y);
const z = (point.z >= min.z) && (point.z <= max.z);
return (x && y && z);
}
point
:一个三维向量对象,表示要检查的点。min
:一个三维向量对象,表示AABB盒子的最小点。max
:一个三维向量对象,表示AABB盒子的最大点。如果点在AABB盒子中,则返回 true
,否则返回 false
。
以下是一个用例:
import { Vector3 } from 'yuka';
const boxMin = new Vector3( -1, -1, -1 );
const boxMax = new Vector3( 1, 1, 1 );
const point1 = new Vector3( 0, 0, 0 );
const point2 = new Vector3( 2, 2, 2 );
console.log( containsPoint( point1, boxMin, boxMax ) ); // true
console.log( containsPoint( point2, boxMin, boxMax ) ); // false