如何将PhysX两轮载具的简单实现转化为一个长尾词?
- 内容介绍
- 文章标签
- 相关推荐
本文共计504个文字,预计阅读时间需要3分钟。
文章目录PxVehicleNoDrive
1.修改轮子个数
2.修改报错信息
3.控制台提示参数不对PVD效果
实现一个托管车辆的物理负载具首先在Snippet中修改了P+文章目录+PxVehicleNoDrive+1. 修改轮子个数+2. 修改报错信息 文章目录PxVehicleNoDrive1.修改轮子个数2.修改报错3.控制台提示参数不对PVD效果想实现一个摩托车的物理载具所以先在Snippet里面改了一下Px文章目录
- PxVehicleNoDrive
- 1.修改轮子个数
- 2.修改报错
- 3.控制台提示参数不对
- PVD效果
PxVehicleNoDrive
看到UE4中是用PxVehicleNoDrive实现的就想在SnippetVehicleNoDrive快速改一下看下效果结果改了几行代码就基本看到效果了
1.修改轮子个数
VehicleDesc initVehicleDesc(){// 省略...// two wheelsconst PxU32 nbWheels 2;
2.修改报错
主要是默认是四个轮子的然后默认代码传多了删掉即可
void startBrakeMode(){gVehicleNoDrive->setBrakeTorque(0, 1000.0f);gVehicleNoDrive->setBrakeTorque(1, 1000.0f);//gVehicleNoDrive->setBrakeTorque(2, 1000.0f);//gVehicleNoDrive->setBrakeTorque(3, 1000.0f);}void startHandbrakeTurnLeftMode(){//gVehicleNoDrive->setBrakeTorque(2, 1000.0f);//gVehicleNoDrive->setBrakeTorque(3, 1000.0f);gVehicleNoDrive->setDriveTorque(0, 1000.0f);gVehicleNoDrive->setDriveTorque(1, 1000.0f);gVehicleNoDrive->setSteerAngle(0, 1.0f); gVehicleNoDrive->setSteerAngle(1, 1.0f); }void startHandbrakeTurnRightMode(){//gVehicleNoDrive->setBrakeTorque(2, 1000.0f);//gVehicleNoDrive->setBrakeTorque(3, 1000.0f);gVehicleNoDrive->setDriveTorque(0, 1000.0f);gVehicleNoDrive->setDriveTorque(1, 1000.0f);gVehicleNoDrive->setSteerAngle(0, -1.0f); gVehicleNoDrive->setSteerAngle(1, -1.0f); }void releaseAllControls(){gVehicleNoDrive->setDriveTorque(0, 0.0f);gVehicleNoDrive->setDriveTorque(1, 0.0f);//gVehicleNoDrive->setDriveTorque(2, 0.0f);//gVehicleNoDrive->setDriveTorque(3, 0.0f);gVehicleNoDrive->setBrakeTorque(0, 0.0f);gVehicleNoDrive->setBrakeTorque(1, 0.0f);//gVehicleNoDrive->setBrakeTorque(2, 0.0f);//gVehicleNoDrive->setBrakeTorque(3, 0.0f);gVehicleNoDrive->setSteerAngle(0, 0.0f);gVehicleNoDrive->setSteerAngle(1, 0.0f);//gVehicleNoDrive->setSteerAngle(2, 0.0f);//gVehicleNoDrive->setSteerAngle(3, 0.0f);}
3.控制台提示参数不对
..\..\PhysXVehicle\src\PxVehicleUpdate.cpp (244) : invalid parameter : PxVehicleComputeSprungMasses: sprungMassCoordinates must all be valid coordinates
断点看一下就知道问题在哪里了主要是计算便宜的时候坐标是无穷大修改下下面的代码即可
void computeWheelCenterActorOffsets(const PxF32 wheelFrontZ, const PxF32 wheelRearZ, const PxVec3 (wheelFrontZ - wheelRearZ) / (numLeftWheels - 1.0f);PX_UNUSED(numWheels);PX_UNUSED(wheelWidth);//front wheel offset from origin.wheelCentreOffsets[0] PxVec3(0.f, -(chassisDims.y / 2 wheelRadius), wheelRearZ);//rear wheel offsets from origin.wheelCentreOffsets[1] PxVec3(0.f, -(chassisDims.y / 2 wheelRadius), wheelFrontZ);}
PVD效果
本文共计504个文字,预计阅读时间需要3分钟。
文章目录PxVehicleNoDrive
1.修改轮子个数
2.修改报错信息
3.控制台提示参数不对PVD效果
实现一个托管车辆的物理负载具首先在Snippet中修改了P+文章目录+PxVehicleNoDrive+1. 修改轮子个数+2. 修改报错信息 文章目录PxVehicleNoDrive1.修改轮子个数2.修改报错3.控制台提示参数不对PVD效果想实现一个摩托车的物理载具所以先在Snippet里面改了一下Px文章目录
- PxVehicleNoDrive
- 1.修改轮子个数
- 2.修改报错
- 3.控制台提示参数不对
- PVD效果
PxVehicleNoDrive
看到UE4中是用PxVehicleNoDrive实现的就想在SnippetVehicleNoDrive快速改一下看下效果结果改了几行代码就基本看到效果了
1.修改轮子个数
VehicleDesc initVehicleDesc(){// 省略...// two wheelsconst PxU32 nbWheels 2;
2.修改报错
主要是默认是四个轮子的然后默认代码传多了删掉即可
void startBrakeMode(){gVehicleNoDrive->setBrakeTorque(0, 1000.0f);gVehicleNoDrive->setBrakeTorque(1, 1000.0f);//gVehicleNoDrive->setBrakeTorque(2, 1000.0f);//gVehicleNoDrive->setBrakeTorque(3, 1000.0f);}void startHandbrakeTurnLeftMode(){//gVehicleNoDrive->setBrakeTorque(2, 1000.0f);//gVehicleNoDrive->setBrakeTorque(3, 1000.0f);gVehicleNoDrive->setDriveTorque(0, 1000.0f);gVehicleNoDrive->setDriveTorque(1, 1000.0f);gVehicleNoDrive->setSteerAngle(0, 1.0f); gVehicleNoDrive->setSteerAngle(1, 1.0f); }void startHandbrakeTurnRightMode(){//gVehicleNoDrive->setBrakeTorque(2, 1000.0f);//gVehicleNoDrive->setBrakeTorque(3, 1000.0f);gVehicleNoDrive->setDriveTorque(0, 1000.0f);gVehicleNoDrive->setDriveTorque(1, 1000.0f);gVehicleNoDrive->setSteerAngle(0, -1.0f); gVehicleNoDrive->setSteerAngle(1, -1.0f); }void releaseAllControls(){gVehicleNoDrive->setDriveTorque(0, 0.0f);gVehicleNoDrive->setDriveTorque(1, 0.0f);//gVehicleNoDrive->setDriveTorque(2, 0.0f);//gVehicleNoDrive->setDriveTorque(3, 0.0f);gVehicleNoDrive->setBrakeTorque(0, 0.0f);gVehicleNoDrive->setBrakeTorque(1, 0.0f);//gVehicleNoDrive->setBrakeTorque(2, 0.0f);//gVehicleNoDrive->setBrakeTorque(3, 0.0f);gVehicleNoDrive->setSteerAngle(0, 0.0f);gVehicleNoDrive->setSteerAngle(1, 0.0f);//gVehicleNoDrive->setSteerAngle(2, 0.0f);//gVehicleNoDrive->setSteerAngle(3, 0.0f);}
3.控制台提示参数不对
..\..\PhysXVehicle\src\PxVehicleUpdate.cpp (244) : invalid parameter : PxVehicleComputeSprungMasses: sprungMassCoordinates must all be valid coordinates
断点看一下就知道问题在哪里了主要是计算便宜的时候坐标是无穷大修改下下面的代码即可
void computeWheelCenterActorOffsets(const PxF32 wheelFrontZ, const PxF32 wheelRearZ, const PxVec3 (wheelFrontZ - wheelRearZ) / (numLeftWheels - 1.0f);PX_UNUSED(numWheels);PX_UNUSED(wheelWidth);//front wheel offset from origin.wheelCentreOffsets[0] PxVec3(0.f, -(chassisDims.y / 2 wheelRadius), wheelRearZ);//rear wheel offsets from origin.wheelCentreOffsets[1] PxVec3(0.f, -(chassisDims.y / 2 wheelRadius), wheelFrontZ);}

