Class: CollisionDetectionManager
静态碰撞检测管理类
Details
静态碰撞检测管理(开启执行碰撞功能,终止碰撞功能,获取返回结果等)
Examples
typescript
this.collisionDetectionManager = cloud.getCollisionDetectionManager(); 在CreateApp时调用
this.collisionDetectionManager = cloud.getCollisionDetectionManager(); 在CreateApp时调用
Hierarchy
Callable
↳
CollisionDetectionManager
Methods
setCollisionCallback
▸ setCollisionCallback(fn
): void
Details
设置碰撞检测进度回调函数
Examples
调用示例:
ts
function changeFinished(re: any) {
console.log(re)
}
cloud.collisionDetectionManager.setCollisionCallback(changeFinished)
function changeFinished(re: any) {
console.log(re)
}
cloud.collisionDetectionManager.setCollisionCallback(changeFinished)
Parameters
Name | Type | Description |
---|---|---|
fn | (CollisionProgressInfo : CollisionProgress ) => void | 回调函数,CollisionProgressInfo指碰撞检测进度信息(包含进度百分比信息,只有当进度为100%才能获取结果) |
Returns
void
collisionCheck
▸ collisionCheck(sampleA
, sampleB
, collisionType
, tolerance
): Promise
<boolean
>
Details
开始执行静态碰撞检测。硬碰撞:两对象发生实际相交,表面最小距离小于容差值的相反数(例如10mm的相反数为-10mm)。软碰撞:两对象未发生实际相交,表面最小距离小于容差值。
Examples
调用示例:
ts
await cloud.getCollisionDetectionManager()
const pVt = await cloud.sceneManager.getVTreeManager()
const node = await pVt.getVirtualRoot()
const node1 = await cloud.sceneManager.getNodeByGuid(['b2d29365fa2983b378174110294378c5'])
const node2 = await cloud.sceneManager.getNodeByGuid(['43054e6f96c13bea6d62092b6867135f'])
const pNode1 = await pVt.createVirtualNode('111', emVirtualNodeType.Node_UnCertain, node!, [node1![0]])
const pNode2 = await pVt.createVirtualNode('222', emVirtualNodeType.Node_UnCertain, node!, [node2![0]])
ret = await cloud.collisionDetectionManager.collisionCheck(pNode1!, pNode2!,CollisionType.HardCollide,10)
await cloud.getCollisionDetectionManager()
const pVt = await cloud.sceneManager.getVTreeManager()
const node = await pVt.getVirtualRoot()
const node1 = await cloud.sceneManager.getNodeByGuid(['b2d29365fa2983b378174110294378c5'])
const node2 = await cloud.sceneManager.getNodeByGuid(['43054e6f96c13bea6d62092b6867135f'])
const pNode1 = await pVt.createVirtualNode('111', emVirtualNodeType.Node_UnCertain, node!, [node1![0]])
const pNode2 = await pVt.createVirtualNode('222', emVirtualNodeType.Node_UnCertain, node!, [node2![0]])
ret = await cloud.collisionDetectionManager.collisionCheck(pNode1!, pNode2!,CollisionType.HardCollide,10)
Parameters
Name | Type | Description |
---|---|---|
sampleA | VirtualNode | 待进行碰撞检测的虚拟节点A |
sampleB | VirtualNode | 待进行碰撞检测的虚拟节点B |
collisionType | null | CollisionType | 碰撞类型 硬碰撞:CollisionType.HardCollide; 软碰撞:CollisionType.SoftCollide |
tolerance | null | number | 容差(单位为米),硬碰撞需要碰撞节点重合的距离的绝对值大于等于容差(距离为负值),软碰撞需要碰撞节点的最小距离小于等于容差(距离为正值) |
Returns
Promise
<boolean
>
是否成功开启碰撞检测(同一时间只允许开启一个检测)
▸ collisionCheck(sampleA
, sampleB
): Promise
<boolean
>
Parameters
Name | Type |
---|---|
sampleA | VirtualNode |
sampleB | VirtualNode |
Returns
Promise
<boolean
>
stopCollisionCheck
▸ stopCollisionCheck(): Promise
<any
>
Details
终止静态碰撞检测
Examples
调用示例:
ts
await cloud.getCollisionDetectionManager()
const pVt = await cloud.sceneManager.getVTreeManager()
const node = await pVt.getVirtualRoot()
const node1 = await cloud.sceneManager.getNodeByGuid(['b2d29365fa2983b378174110294378c5'])
const node2 = await cloud.sceneManager.getNodeByGuid(['43054e6f96c13bea6d62092b6867135f'])
const pNode1 = await pVt.createVirtualNode('111', emVirtualNodeType.Node_UnCertain, node!, [node1![0]])
const pNode2 = await pVt.createVirtualNode('222', emVirtualNodeType.Node_UnCertain, node!, [node2![0]])
await cloud.collisionDetectionManager.collisionCheck(pNode1!, pNode2!)
await collisionDetectionManager.stopCollisionCheck()
await cloud.getCollisionDetectionManager()
const pVt = await cloud.sceneManager.getVTreeManager()
const node = await pVt.getVirtualRoot()
const node1 = await cloud.sceneManager.getNodeByGuid(['b2d29365fa2983b378174110294378c5'])
const node2 = await cloud.sceneManager.getNodeByGuid(['43054e6f96c13bea6d62092b6867135f'])
const pNode1 = await pVt.createVirtualNode('111', emVirtualNodeType.Node_UnCertain, node!, [node1![0]])
const pNode2 = await pVt.createVirtualNode('222', emVirtualNodeType.Node_UnCertain, node!, [node2![0]])
await cloud.collisionDetectionManager.collisionCheck(pNode1!, pNode2!)
await collisionDetectionManager.stopCollisionCheck()
Returns
Promise
<any
>
getCollisionCheckResult
▸ getCollisionCheckResult(): Promise
<CollisionResult
[]>
Details
获取静态碰撞检测结果(只有当静态碰撞检测进度100%时才可获取结果)
Examples
调用示例:
ts
await cloud.getCollisionDetectionManager()
const pVt = await cloud.sceneManager.getVTreeManager()
const node = await pVt.getVirtualRoot()
const node1 = await cloud.sceneManager.getNodeByGuid(['b2d29365fa2983b378174110294378c5'])
const node2 = await cloud.sceneManager.getNodeByGuid(['43054e6f96c13bea6d62092b6867135f'])
const pNode1 = await pVt.createVirtualNode('111', emVirtualNodeType.Node_UnCertain, node!, [node1![0]])
const pNode2 = await pVt.createVirtualNode('222', emVirtualNodeType.Node_UnCertain, node!, [node2![0]])
await cloud.collisionDetectionManager.collisionCheck(pNode1!, pNode2!)
const info = await collisionDetectionManager.getCollisionCheckResult()
await cloud.getCollisionDetectionManager()
const pVt = await cloud.sceneManager.getVTreeManager()
const node = await pVt.getVirtualRoot()
const node1 = await cloud.sceneManager.getNodeByGuid(['b2d29365fa2983b378174110294378c5'])
const node2 = await cloud.sceneManager.getNodeByGuid(['43054e6f96c13bea6d62092b6867135f'])
const pNode1 = await pVt.createVirtualNode('111', emVirtualNodeType.Node_UnCertain, node!, [node1![0]])
const pNode2 = await pVt.createVirtualNode('222', emVirtualNodeType.Node_UnCertain, node!, [node2![0]])
await cloud.collisionDetectionManager.collisionCheck(pNode1!, pNode2!)
const info = await collisionDetectionManager.getCollisionCheckResult()
Returns
Promise
<CollisionResult
[]>
碰撞检测结果