API Docs for: 0.7.1
Show:

Narrowphase Class

细测阶段. 为给定的形状和变换创建碰撞和摩擦

构造器

Narrowphase

()

Methods

bodiesOverlap

(
  • bodyA
  • bodyB
)
Boolean

参数:

Returns:

Boolean:

capsuleCapsule

(
  • bi
  • si
  • xi
  • ai
  • bj
  • sj
  • xj
  • aj
)

胶囊与胶囊的细测

参数:

circleCapsule

(
  • bi
  • si
  • xi
  • ai
  • bj
  • sj
  • xj
  • aj
)

圆形与胶囊的细测

参数:

circleCircle

(
  • bodyA
  • shapeA
  • offsetA
  • angleA
  • bodyB
  • shapeB
  • offsetB
  • angleB
  • justTest
  • [radiusA]
  • [radiusB]
)

圆形与圆形的细测

参数:

  • bodyA Body
  • shapeA Circle
  • offsetA Array
  • angleA Number
  • bodyB Body
  • shapeB Circle
  • offsetB Array
  • angleB Number
  • justTest Boolean
  • [radiusA] Number 可选

    shapeA 的半径,可选

  • [radiusB] Number 可选

    shapeB 的半径,可选

circleConvex

(
  • circleBody
  • circleShape
  • circleOffset
  • circleAngle
  • convexBody
  • convexShape
  • convexOffset
  • convexAngle
  • justTest
  • circleRadius
)

圆形与凸面的细测

参数:

  • circleBody Body
  • circleShape Circle
  • circleOffset Array
  • circleAngle Number
  • convexBody Body
  • convexShape Convex
  • convexOffset Array
  • convexAngle Number
  • justTest Boolean
  • circleRadius Number

circleHeightfield

(
  • bi
  • si
  • xi
  • bj
  • sj
  • xj
  • aj
)

参数:

circleHeightfield

(
  • bi
  • si
  • xi
  • bj
  • sj
  • xj
  • aj
)

参数:

circleLine

(
  • circleBody
  • circleShape
  • circleOffset
  • circleAngle
  • lineBody
  • lineShape
  • lineOffset
  • lineAngle
  • justTest
  • lineRadius
  • circleRadius
)

圆形与线的细测

参数:

  • circleBody Body
  • circleShape Circle
  • circleOffset Array
  • circleAngle Number
  • lineBody Body
  • lineShape Line
  • lineOffset Array
  • lineAngle Number
  • justTest Boolean

    如果设置为true, 则该函数将在不添加方程的情况下返回是否相交的结果

  • lineRadius Number

    添加到线型的半径,可用于测试胶囊

  • circleRadius Number

    如果设置了将覆盖圆形的半径

circleParticle

(
  • circleBody
  • circleShape
  • circleOffset
  • circleAngle
  • particleBody
  • particleShape
  • particleOffset
  • particleAngle
  • justTest
)

圆形和粒子的细测

参数:

  • circleBody Body
  • circleShape Circle
  • circleOffset Array
  • circleAngle Number
  • particleBody Body
  • particleShape Particle
  • particleOffset Array
  • particleAngle Number
  • justTest Boolean

circlePlane

(
  • bi
  • si
  • xi
  • bj
  • sj
  • xj
  • aj
)

圆与平面的细测

参数:

  • bi Body

    应连接到方程的第一个刚体

  • si Circle

    参与碰撞的圆形

  • xi Array

    计算形状时的额外偏移,添加到 circleBody.position. 将不会被circleBody.angle 旋转 (maybe it should, for sake of homogenity?),如果没有则设置为null

  • bj Body

    应连接到方程的第二个刚体

  • sj Plane

    参与碰撞的平面形状

  • xj Array

    平面形状的额外偏移

  • aj Number

    平面形状的额外角度

collidedLastStep

(
  • bodyA
  • bodyB
)
Boolean

检测从上一次reset()后刚体是否碰撞

参数:

Returns:

Boolean:

convexCapsule

(
  • convexBody
  • convexShape
  • convexPosition
  • convexAngle
  • capsuleBody
  • capsuleShape
  • capsulePosition
  • capsuleAngle
)

凸面与胶囊的细测

参数:

  • convexBody Body
  • convexShape Convex
  • convexPosition Array
  • convexAngle Number
  • capsuleBody Body
  • capsuleShape Capsule
  • capsulePosition Array
  • capsuleAngle Number

convexConvex

(
  • bi
  • si
  • xi
  • ai
  • bj
  • sj
  • xj
  • aj
)

凸面与凸面的细测, 更多信息参考这篇文章

参数:

convexLine

(
  • convexBody
  • convexShape
  • convexOffset
  • convexAngle
  • lineBody
  • lineShape
  • lineOffset
  • lineAngle
  • justTest
)

凸面与线形的细测

参数:

  • convexBody Body
  • convexShape Convex
  • convexOffset Array
  • convexAngle Number
  • lineBody Body
  • lineShape Line
  • lineOffset Array
  • lineAngle Number
  • justTest Boolean

createContactEquation

(
  • bodyA
  • bodyB
)
ContactEquation

复用已有或创建一个碰撞方程

参数:

Returns:

createFrictionEquation

(
  • bodyA
  • bodyB
)
FrictionEquation

复用已有或创建一个摩擦方程

参数:

Returns:

createFrictionFromContact

(
  • contactEquation
)
FrictionEquation

从碰撞方程给出的数据中创建一个摩擦方程,使用同一个偏移向量ri和rj,但切向量将从碰撞法向量构造

参数:

Returns:

findSeparatingAxis

(
  • c1
  • offset1
  • angle1
  • c2
  • offset2
  • angle2
  • sepAxis
)
Boolean static

从形状间寻找分离轴,使得其分离距离最大化

参数:

  • c1 Convex
  • offset1 Array
  • angle1 Number
  • c2 Convex
  • offset2 Array
  • angle2 Number
  • sepAxis Array

    结果坐标

Returns:

Boolean:

该坐标是否可寻

getClosestEdge

(
  • c
  • angle
  • axis
  • flip
)
Number static

得到一个与轴线最接近的边缘

参数:

  • c Convex
  • angle Number
  • axis Array
  • flip Boolean

Returns:

Number:

最接近边的索引值,这个索引值和其下一个值跨过结果边缘,如果失败则返回-1

lineBox

(
  • lineBody
  • lineShape
  • lineOffset
  • lineAngle
  • boxBody
  • boxShape
  • boxOffset
  • boxAngle
  • justTest
)

线条和矩形的细测

参数:

  • lineBody Body
  • lineShape Line
  • lineOffset Array
  • lineAngle Number
  • boxBody Body
  • boxShape Box
  • boxOffset Array
  • boxAngle Number
  • justTest Boolean

lineCapsule

(
  • lineBody
  • lineShape
  • linePosition
  • lineAngle
  • capsuleBody
  • capsuleShape
  • capsulePosition
  • capsuleAngle
)

胶囊与线形的细测

参数:

  • lineBody Body
  • lineShape Line
  • linePosition Array
  • lineAngle Number
  • capsuleBody Body
  • capsuleShape Capsule
  • capsulePosition Array
  • capsuleAngle Number

lineLine

(
  • bodyA
  • shapeA
  • positionA
  • angleA
  • bodyB
  • shapeB
  • positionB
  • angleB
)

线与线的细测

参数:

  • bodyA Body
  • shapeA Line
  • positionA Array
  • angleA Number
  • bodyB Body
  • shapeB Line
  • positionB Array
  • angleB Number

particleConvex

(
  • particleBody
  • particleShape
  • particleOffset
  • particleAngle
  • convexBody
  • convexShape
  • convexOffset
  • convexAngle
  • justTest
)

粒子与凸面的细测

参数:

  • particleBody Body
  • particleShape Particle
  • particleOffset Array
  • particleAngle Number
  • convexBody Body
  • convexShape Convex
  • convexOffset Array
  • convexAngle Number
  • justTest Boolean

particlePlane

(
  • particleBody
  • particleShape
  • particleOffset
  • particleAngle
  • planeBody
  • planeShape
  • planeOffset
  • planeAngle
  • justTest
)

粒子与平面的细测

参数:

  • particleBody Body
  • particleShape Particle
  • particleOffset Array
  • particleAngle Number
  • planeBody Body
  • planeShape Plane
  • planeOffset Array
  • planeAngle Number
  • justTest Boolean

planeCapsule

(
  • planeBody
  • planeShape
  • planeOffset
  • planeAngle
  • capsuleBody
  • capsuleShape
  • capsuleOffset
  • capsuleAngle
  • justTest
)

参数:

  • planeBody Body
  • planeShape Circle
  • planeOffset Array
  • planeAngle Number
  • capsuleBody Body
  • capsuleShape Particle
  • capsuleOffset Array
  • capsuleAngle Number
  • justTest Boolean

planeConvex

(
  • planeBody
  • planeShape
  • planeOffset
  • planeAngle
  • convexBody
  • convexShape
  • convexOffset
  • convexAngle
  • justTest
)

平面与凸面的细测

参数:

  • planeBody Body
  • planeShape Plane
  • planeOffset Array
  • planeAngle Number
  • convexBody Body
  • convexShape Convex
  • convexOffset Array
  • convexAngle Number
  • justTest Boolean

planeLine

(
  • planeBody
  • planeShape
  • planeOffset
  • planeAngle
  • lineBody
  • lineShape
  • lineOffset
  • lineAngle
)

平面与线形的细测

参数:

  • planeBody Body
  • planeShape Plane
  • planeOffset Array
  • planeAngle Number
  • lineBody Body
  • lineShape Line
  • lineOffset Array
  • lineAngle Number

projectConvexOntoAxis

(
  • convexShape
  • convexOffset
  • convexAngle
  • worldAxis
  • result
)
static

投影到面向世界的轴上

参数:

  • convexShape Convex
  • convexOffset Array
  • convexAngle Number
  • worldAxis Array
  • result Array

reset

()

弃用旧方程

Properties

collidingBodiesLastStep

TupleDictionary private

Keeps track of the colliding bodies last step.

contactEquationPool

ContactEquationPool

跟踪所有分配的碰撞方程

Example:

// Allocate a few equations before starting the simulation.
                    // This way, no contact objects need to be created on the fly in the game loop.
                    world.narrowphase.contactEquationPool.resize(1024);
                    world.narrowphase.frictionEquationPool.resize(1024);
                    

contactEquations

Array

contactSkinSize

Number

用于下一碰撞方程的皮肤尺寸值

Default: 0.01

enabledEquations

Boolean

是否在下一次碰撞中启用方程

enableFriction

Boolean

是否在下一次碰撞中启用摩擦方程

enableFrictionReduction

Boolean deprecated

Defined in src/collision/Narrowphase.js:148

Deprecated: This flag will be removed when the feature is stable enough.

启用摩擦方程简化,如果禁用了,平面上的盒子将产生两个碰撞方程和两个摩擦方程,如果启用了,将只产生一个方程。简化对所有碰撞的形状都适用

Default: true

frictionCoefficient

Number

用于下一摩擦方程的摩擦值

frictionEquationPool

FrictionEquationPool

跟踪所有分配的摩擦方程

frictionEquations

Array

frictionRelaxation

Number

用于下一摩擦方程的弛豫度

frictionStiffness

Number

用于下一摩擦方程的刚度

restitution

Number

用于下一碰撞方程的弹性

slipForce

Number

用于创建摩擦方程的摩擦偏移力

stiffness

Number

用于下一碰撞方程的刚度

stiffness

Number

用于下一碰撞方程的刚度

surfaceVelocity

Number

将会成为每个产生的摩擦方程的.relativeVelocity属性