J'ai un pion/acteur qui est une sphère (une boule de neige). Quand je roule sur la neige, elle grandit (je la redimensionne et ajoute de la masse). Problème: J'ai un comportement bizarre, ma balle roule mais elle saute parfois (ou rebondit).Mise à l'échelle d'une sphère crée des collisions chevauchantes
La raison semble être que la balle devient plus grande et se chevauchent avec le sol, provoquant une grosse collision.
J'ai essayé de changer sa position avec un décalage (Ball->SetAllPhysicsPosition(Ball->RelativeLocation + FVector(0, 0, newRadius-pastRadius);
, mais je dois toujours le même problème. (Il « travaille » avec un grand hardcoded offset, mais pas avec toute taille).
Auriez-vous un idée sur la façon de corriger ce comportement?
Voici le code que j'utilise pour rendre le ballon plus grand. ajouter un couple pour la déplacer.
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);
}
}