0
私はPhysX 3.2にアップグレードして、テストボックスを重力で移動させるのに数日間苦労していますが、PhysX 3.2:シンプルボックスダイナミックは移動しません
私はPhysXのドキュメントに従ってきましたが、私の方法で実装しました。
PxBoxGeometry geometry = PxBoxGeometry(Convert::toPxVector3(size));
if(geometry.isValid())
{
PxMaterial* material = api->createMaterial(0.5f, 0.5f, 0.1f);
PxShape* shape = createShape(actor, geometry, material);
PxRigidBodyExt::updateMassAndInertia(*body, 33.0f);
}
としてシーンをシミュレートする:
float elapsedTime = float((float)mTime.getElapsedTime()/1000.0f);
mAccumulator += elapsedTime;
if(mAccumulator < mStepSize)
{
return;
}
else
{
mAccumulator -= mStepSize;
mPxScene->simulate(mStepSize);
mDynamicBodySys->updateGameObjectPositions();
mPxScene->fetchResults(true);
mTime.restart();
}
PxRigidDynamic* body = mPxSDK->createRigidDynamic(Convert::toPxTransform(transform));
PxRigidBodyExt::updateMassAndInertia(*body, 1.0f);
mPxScene->addActor(*body);
は、箱形を追加します。動的な俳優の作成
physx::PxSceneDesc sceneDesc = physx::PxSceneDesc((physx::PxTolerancesScale()));
sceneDesc.gravity = physx::PxVec3(0.0f, -9.8f, 0.0f);
if(!sceneDesc.cpuDispatcher)
{
physx::PxDefaultCpuDispatcher* mCpuDispatcher = physx::PxDefaultCpuDispatcherCreate(4);
if(!mCpuDispatcher)
LOG("PxDefaultCpuDispatcherCreate failed!");
sceneDesc.cpuDispatcher = mCpuDispatcher;
}
if(!sceneDesc.filterShader)
sceneDesc.filterShader = &physx::PxDefaultSimulationFilterShader;
physxScene = physMgr->getSDK()->createScene(sceneDesc);
:これはかなりデフォルトの設定ですビジュアルデバッグを調べると私はボックスとフレームカウントが増加するのを見ることができます。しかし、それは動いていない。俳優と箱の形は正しい魅力を持っているようです。 LinearVelocityは負のY軸で増加し、その質量は33などです。しかし、ポーズはまだゼロ/同一です。私は何が欠けていますか?