c++ 胶囊的PhysX重叠场景/几何查询

hvvq6cgz  于 2022-11-27  发布在  其他
关注(0)|答案(1)|浏览(144)

我正在尝试使用胶囊对撞机进行场景查询,由于某种原因,即使在PVD中,我的重叠函数也返回true,太空舱绝对不会相撞这很奇怪,因为我的OnTrigger/onContact函数只有在发生实际冲突后才被正确调用,这意味着我正确设置了PxGeometry,但由于某种原因,我的重叠()调用独立于onTrigger/onContact。
下面是我的代码摘录:

for (auto& collider2 : actor2->m_colliders)
{
    bool isOverlapping = physx::PxGeometryQuery::overlap(collider->GetPhysXShape()->getGeometry().any(), actor1->GetPhysXActor().getGlobalPose(), collider2->GetPhysXShape()->getGeometry().any(), actor2->GetPhysXActor().getGlobalPose());
    if (isOverlapping)
        return true;
}

我已经尝试使用场景和几何重叠查询,但由于某些原因,只有我的胶囊碰撞器(盒子,球体工作正常)有一个奇怪的偏移。这不是一个大问题,因为奇怪的偏移是相当小的,但我不希望它注册为碰撞时,2碰撞器没有真正碰撞。

nzk0hqpo

nzk0hqpo1#

我发现了这个问题,事实证明,重叠查询没有考虑PxShape的局部变换,因此我使用以下方法解决了这个问题:

physx::PxGeometryQuery::overlap(collider->GetPhysXShape()->getGeometry().any(), actor1->GetPhysXActor().getGlobalPose() * collider->GetPhysXShape()->getLocalPose(), collider2->GetPhysXShape()->getGeometry().any(), actor2->GetPhysXActor().getGlobalPose());

相关问题