-
Notifications
You must be signed in to change notification settings - Fork 71
Description
Many of today's tables use what we call Roth Physics for drop target behavior, named after @rothbauerw and documented here. The animation is already mostly up to par with this system, but there are still physics features that need to be ported over to VPE physics.
These features should extend the vanilla drop target behavior and be optional — meaning they can be enabled when needed.
Multi Hits
This feature enables the possibility of hitting multiple targets in a bank with a single shot. The idea is to use two colliders: one for registering a hit and a second, offset collider that acts as the "wall". This lets the ball move closer to the target before being bounced back, allowing it to register a second target within that small timeframe.
Currently, we already assign two collider meshes to a drop target (front and back). With this feature, we would simply define a third mesh for the actual collision. Animation would also need to be adapted:
- Rotation animation should trigger when the first collider is hit, and
- Drop animation should trigger when the second collider (the wall) is impacted.
More Realistic Collision
By assigning a mass to the drop target, the ball’s speed and rebound angle become different and more natural after a collision. This makes the ball feel more realistic: it can rebound sharply off a heavy (hard) target, or weakly bounce off a light (soft) one.
Bricks
In pinball, a brick occurs when the ball hits a target hard but bounces off without knocking it down — as if it hit a solid wall.
A brick is triggered when the ball’s velocity is above a certain threshold and the ball strikes the target at a sufficiently perpendicular angle.
Side Hits
A side hit happens when the ball’s approach angle is too flat relative to the target face, making it insufficient to register a proper hit and drop the target.
Ball Lifting on Pull-Up
This can happen with free-standing targets that pop up while a ball is rolling over them. The sudden movement can cause the ball to be lifted upward, simulating the physical interaction seen in real machines. The VBS code just check whether the ball is above and applies a static z-velocity to the ball. This could be improved by looking up the current velocity of the up-animation (since it's defined by an animation curve).
Backside Hits
Sometimes, when the drop target is hit hard enough from the back, it can also trigger a drop. This is implemented in apophis' Dark Chaos table, and would be another improvement to port over.
All of these features are fully implemented in the guide linked above. They should be ported into the physics loop directly, rather than being scripted as a workaround.