【发布时间】:2017-03-13 18:16:23
【问题描述】:
我有一个球体(雪球)的棋子/演员。当我在雪地上滚动时,它会变大(我缩放它并增加质量)。
问题:我有一个奇怪的行为,我的球会滚动,但有时会“跳”(或弹起来)。
原因似乎是球变大了,与地面重叠,造成了很大的碰撞。
我尝试使用偏移量更改它的位置(Ball->SetAllPhysicsPosition(Ball->RelativeLocation + FVector(0, 0, newRadius-pastRadius);,但我仍然遇到同样的问题。(它“工作”与一个大的硬编码偏移量,但不是任何大小)。
您想知道如何解决此问题吗?
这是我用来让球变大的代码。我增加了扭矩来移动它。
void ASnowballBall::NotifyHit(...)
{
float resizeValue = 0.0f;
//If the snowball collides with snow, it grows
if (Other->GetName().StartsWith("Snow", ESearchCase::IgnoreCase) && Ball->BodyInstance.GetUnrealWorldVelocity().Size() > 50.0f)
{
// Max size based on mass
if (Ball->GetMass() < 10000.0f){
resizeValue = (20.0f / Ball->GetMass()));
resizeValue = FMath::Clamp(resizeValue, 0.0f, 0.003f);
Ball->SetRelativeScale3D(Ball->RelativeScale3D + resizeValue);
Ball->SetMassScale("None", Ball->BodyInstance.MassScale);
}
}
【问题讨论】:
标签: collision scaling overlap unreal-engine4