我正在编辑虚幻引擎中的滚动球示例地图(在虚幻引擎中)。我改变了它,所以我的球长大并融化(这是一个雪球),增加和减少尺寸和质量。
我的问题是控制它。示例地图通过添加扭矩来移动球。我的问题是我的质量变化很大,所以我需要一个扭矩,这取决于我的球的大小(不是1:1,因为更大的雪球应该仍然移动得更慢)。
我的问题是我的球似乎累积了扭矩并且旋转很多(我在球上添加了很多摩擦,它没有帮助,它只是稍微改变了问题)。举个例子,如果我向左按一会儿,它就会离开。如果我向右按,它就会向右移动。但当我停止向右按时,它会旋转并再次向左移动。
这是我目前的代码:
void ASnowballBall::MoveRight(float Val)
{
const FVector Torque = FVector(-1.f * getNewTorque(Val), 0.f, 0.f);
Ball->AddTorque(SpringArm->GetComponentRotation().RotateVector(Torque));
}
void ASnowballBall::MoveForward(float Val)
{
const FVector Torque = FVector(0.f, getNewTorque(Val), 0.f);
Ball->AddTorque(SpringArm->GetComponentRotation().RotateVector(Torque));
}
float ASnowballBall::getNewTorque(float Val)
{
return (Val * RollTorque * (log2(Ball->GetMass()))) / 10000;
}
注意:对数是一个测试,以随质量缓慢增加扭矩。它根本不能很好地运作。现在我正在使用return Val * RollTorque
,但它几乎一样糟糕。
控制非常糟糕,我想知道如何修复它。如果去除扭矩会更好,我会改变它。我只是想要一个有趣的响应式控制,并且玩家仍然可以感受到球的大小(与小球相比较大时)。
PS:我的原始质量大约是500公斤,可以达到20 000公斤(这是一个益智游戏)。我没有设置原始质量,它是由Unreal设置的相对于它的大小。我可以改变质量等级。