Ich habe einen Bauern/Schauspieler, der eine Kugel (ein Schneeball) ist. Wenn ich auf Schnee rolle, wächst er (ich skaliere ihn und füge Masse hinzu).Skalieren einer Kugel erzeugt überlappende Kollisionen
Problem: Ich habe ein seltsames Verhalten, mein Ball rollt aber manchmal "springt" (oder springt auf).
Der Grund scheint zu sein, dass der Ball größer wird und sich mit dem Boden überschneidet, was eine große Kollision verursacht.
Ich habe versucht, seine Position mit einem Offset (Ball->SetAllPhysicsPosition(Ball->RelativeLocation + FVector(0, 0, newRadius-pastRadius);
, aber ich habe das gleiche Problem noch zu ändern. (Es „funktioniert“ mit einem großen Offset fest einprogrammiert, aber nicht mit jeder Größe).
Möchten Sie eine haben Idee, wie dieses Verhalten zu beheben?
Dies ist der Code, den ich den Ball zu machen, verwenden wird größer. ich füge Drehmoment um diese zu bewegen.
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);
}
}