Skip to content

Drop Target Physics #536

@freezy

Description

@freezy

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requesthelp wantedExtra attention is neededphysicsRelated to the physics engine

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions