AABB
AlignmentBehavior
ArriveBehavior
AStar
BFS
BoundingSphere
BVH
BVHNode
Cell
CellSpacePartitioning
CohesionBehavior
CompositeGoal
ConvexHull
Corridor
CostTable
DFS
Dijkstra
Edge
EntityManager
EvadeBehavior
EventDispatcher
Behavior
FollowPathBehavior
FuzzyAND
FuzzyCompositeTerm
FuzzyFAIRLY
FuzzyModule
FuzzyOR
FuzzyRule
FuzzySet
FuzzyTerm
FuzzyVariable
FuzzyVERY
GameEntity
Goal
GoalEvaluator
Graph
GraphUtils
HalfEdge
HeuristicPolicyDijkstra
HeuristicPolicyEuclid
HeuristicPolicyEuclidSquared
HeuristicPolicyManhattan
InterposeBehavior
LeftSCurveFuzzySet
LeftShoulderFuzzySet
LineSegment
Logger
MathUtils
Matrix3
Matrix4
MemoryRecord
MemorySystem
MeshGeometry
MessageDispatcher
MovingEntity
NavEdge
NavMesh
NavMeshLoader
NavNode
Node
NormalDistFuzzySet
OBB
ObstacleAvoidanceBehavior
OffsetPursuitBehavior
OnPathBehavior
Path
Plane
Polygon
Polyhedron
PriorityQueue
PursuitBehavior
Quaternion
Ray
RectangleTriggerRegion
Regular
RightSCurveFuzzySet
RightShoulderFuzzySet
SAT
SeekBehavior
SeparationBehavior
SingletonFuzzySet
Smoother
SphericalTriggerRegion
State
StateMachine
SteeringBehavior
SteeringManager
Task
TaskQueue
Telegram
Think
Time
TriangularFuzzySet
Trigger
TriggerRegion
Vector3
Vehicle
Version
WanderBehavior

intersectsAABB

intersectsAABB 方法是 Ray 类库中的一种方法,用于计算射线是否与给定 axis-aligned bounding box(AABB,轴对齐包围盒)相交。该方法返回一个布尔值,表示射线是否与 AABB 相交。

语法

intersectsAABB(aabb: AABB, intersectionPoint: Vector3): boolean;

参数

  • aabb:表示待计算相交的 AABB 轴对齐包围盒。该参数是一个 AABB 对象。
  • intersectionPoint:表示相交点。该参数是一个 Vector3 对象,用于存储射线与 AABB 相交点的位置。

返回值

  • 该方法返回一个布尔值,表示射线是否与 AABB 相交。如果射线与 AABB 相交,则返回 true;反之,返回 false

示例

import { Ray, Vector3, AABB } from 'yuka';

// 创建一个 AABB 对象
let aabb = new AABB();
aabb.setFromPoints( [ new Vector3( -10, -10, -10 ), new Vector3( 10, 10, 10 ) ] );

// 创建一个 Ray 对象
let ray = new Ray( new Vector3( -15, 0, 0 ), new Vector3( 1, 0, 0 ) );

// 获取相交点
let intersectionPoint = new Vector3();
let intersects = ray.intersectsAABB( aabb, intersectionPoint );

if ( intersects ) {
  console.log( "射线与 AABB 相交,相交点的位置是:", intersectionPoint );
} else {
  console.log( "射线与 AABB 不相交。" );
}

注意事项

  • 计算两个 AABB 是否相交的过程比较繁琐,且需要考虑射线在 AABB 上的投影问题。如果对 AABB 的计算结果不太确定,可以使用其它的相交检测方法进行验证。
  • AABB 轴对齐包围盒是一种非常常见的碰撞检测模型,其优点是计算效率高,且易于实现。可以考虑将其用于基础的碰撞检测算法中,如 BVH 等。