I use the unreal engine 4 to bounce a ball off of walls in a 2D space, but over time the ball gets slower and slower.
Movement happens in the tick function of the ball
FVector location = GetActorLocation(); location.X += this->Velocity.X * DeltaSeconds; location.Y += this->Velocity.Y * DeltaSeconds; SetActorLocation(location, true);
When a wall gets hit I get a Hit Event with the normal of the collision. This is how I calculate the new velocity of the ball:
FVector2D V = this->Velocity; FVector2D N = FVector2D(HitNormal.X, HitNormal.Y); FVector2D newVelocity = -2 * (V.X * N.X + V.Y * N.Y) * N + V; this->Velocity = newVelocity;
Over time, the more the ball bounced around, the velocity gets smaller and smaller. How do I prevent speed loss when bouncing off walls like that? It's supposed to be a perfect bounce without friction or anything.