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

worldMatrix

worldMatrix 属性是 Trigger 类的一个成员,它表示该 Trigger 实例在世界坐标系中的变换矩阵。在引擎渲染过程中,每个物体都需要在自己的局部坐标系下进行变换,然后才能被正确地渲染出来。而 worldMatrix 属性则是将这个局部坐标系下的变换矩阵转换到了世界坐标系中,这样才能正确地呈现出物体在场景中的位置、旋转和缩放信息。

worldMatrix 是一个 4x4 的矩阵,包含了物体的平移、旋转和缩放信息。网格、相机、灯光等物体都有自己的 worldMatrix 属性。它是通过物体的局部变换矩阵和它的父节点的 worldMatrix 属性计算出来的。对于网格来说,它的局部变换矩阵通常由用户在编辑器中进行设置,包含了网格的位置、旋转和缩放信息。而相机、灯光等物体的局部变换矩阵则通常由引擎内部计算,用户无法直接修改。

在程序中,我们可以通过读取一个物体的 worldMatrix 属性来获取它在场景中的位置、旋转和缩放信息。我们也可以修改一个物体的 worldMatrix 属性,从而实现对物体的移动、旋转和缩放等操作。需要注意的是,由于 worldMatrix 属性是通过物体的局部变换矩阵和父节点的 worldMatrix 属性计算而来,因此当我们修改一个物体的 worldMatrix 属性时,也间接地修改了它的局部变换矩阵和父节点的 worldMatrix 属性。

以下是一个修改一个物体的 worldMatrix 属性的示例:

// 获取一个物体的 worldMatrix 属性
const worldMatrix = trigger.worldMatrix;

// 修改该物体的位置
worldMatrix[12] = 10; // x 坐标
worldMatrix[13] = 5; // y 坐标
worldMatrix[14] = -20; // z 坐标

// 修改该物体的旋转
// 首先需要先计算出旋转矩阵
const rotationMatrix = mat4.create();
mat4.rotateX(rotationMatrix, rotationMatrix, Math.PI / 2);
mat4.rotateY(rotationMatrix, rotationMatrix, Math.PI / 4);
mat4.rotateZ(rotationMatrix, rotationMatrix, Math.PI / 6);

// 然后将旋转矩阵设置到该物体的 worldMatrix 属性中
const newMatrix = mat4.create();
mat4.multiply(newMatrix, worldMatrix, rotationMatrix);
trigger.worldMatrix = newMatrix;

总之,worldMatrix 属性是引擎中非常重要的属性之一,它提供了物体在场景中位置、旋转和缩放信息的计算和修改接口,是实现复杂动画、交互和渲染等功能的核心基础。