当有变换时,RayTest失败

时间:2015-03-03 17:16:57

标签: bulletphysics

我在使用子弹物理学进行射线测试时遇到了问题。 raytest仅适用于具有标识转换的对象。如果有任何翻译,则计算错误的射线测试。这是代码: [代码]

            btTransform trans;
            trans.setIdentity();
            trans.setFromOpenGLMatrix(matrix.m);
            btDefaultMotionState* motionState = new btDefaultMotionState(trans);
            btRigidBody::btRigidBodyConstructionInfo rbInfo(
                0, motionState, m_pVertexBuffer->GetBulletShape(), btVector3(0,0,0));
            btRigidBody* body = new btRigidBody(rbInfo);      
            g_physics.GetWorld()->addRigidBody(body);
    ....
        g_physics.GetWorld()->updateAabbs();
        g_physics.GetWorld()->computeOverlappingPairs();
        btVector3 btStart(x1, y1, z1);
        btVector3 btEnd(x2, y2, z2);
        btCollisionWorld::ClosestRayResultCallback ray(btStart, btEnd);


// Perform raycast
    g_physics.GetWorld()->rayTest(btStart, btEnd, ray);
    if (ray.hasHit()) 
    {
        btEnd = ray.m_hitPointWorld;
    }

[/代码] 现在,我的游戏使用z轴作为向上,但这不应该是一个问题,因为光线也输入为z。

0 个答案:

没有答案