Swipe to kick. Watch the panels fly.

NumberKick is a 3D physics game built with SceneKit. Nine numbered panels (1–9) are arranged in a randomized 3×3 grid inside a goal. Swipe up to shoot — the trajectory changes based on where and how you swipe. Hit a panel and it breaks free from its ball-socket joint, tumbling to the ground with realistic physics. Reset and do it again.

Download on the App Store

Get it on the App Store

Download on the App Store

Swipe Controls with Real Ball Trajectory

The ball's forward force comes from the vertical component of the swipe. The starting position of the swipe controls the lift — starting near the bottom of the screen sends the ball high, starting near the top produces a low, hard shot. Horizontal swipe adds a sideways curve. Every kick feels different depending on where and how you swipe.

SceneKit Physics Simulation

Each panel is anchored to the goal frame using an SCNPhysicsBallSocketJoint. A ball hit removes the joint and the panel becomes a fully dynamic rigid body governed by SceneKit's physics engine — it falls, bounces, and tumbles naturally. Panels near the ground fade out and disappear after a short delay.

Nine Panels, Randomized Every Time

The numbers 1 through 9 are shuffled and placed in a 3×3 grid inside the goal at the start of each round. The arrangement is different every time you reset, so the shooting challenge changes with each play.

Reset Button Restarts Instantly

Tap the reset button in the lower-left corner to restore the goal, panels, and ball to their starting state. The panels shuffle to a new random arrangement so the next round feels fresh. The ball fades out and reappears at its kick position.

Swipe position and direction both shape the kick.

The DragGesture reads both the translation (direction and distance of the swipe) and the starting Y position within the view. A normalized position value determines the lift factor — a low start on screen (near the bottom) adds upward force to the kick, a high start (near the top) reduces it. The horizontal translation adds a sideways force component. Together these three inputs produce a wide range of shot trajectories from a single swipe gesture.

KICK
PHYSICS

Panels are pinned with ball-socket joints and break free on impact.

Each of the nine PanelNode instances is connected to a static anchor node at the same world position using SCNPhysicsBallSocketJoint. When the ball's contact delegate fires, the joint for the hit panel is removed from the physics world and the panel's dynamic body takes over — falling, sliding, and colliding with the ground and other panels naturally. Once a panel's Y position drops below a threshold, it waits three seconds and then fades out via SCNAction.

Grass, clouds, and ball textures are all generated in code.

The grass ground plane uses two GKPerlinNoise maps to produce a diffuse color texture with stripe shading and dry patches, plus a normal map for surface detail. Clouds are generated from perlin noise into transparent plane nodes with SCNBillboardConstraint so they always face the camera. The soccer ball pattern is derived mathematically from a truncated icosahedron — the classic black-and-white pentagon/hexagon geometry — computed per pixel in UV space.

TEXTURE
GRAPHICS

Depth of field and shadows give the scene visual depth.

The camera has wantsDepthOfField enabled with a focus distance set toward the goal, producing a natural bokeh effect in the foreground where the ball starts. The directional light casts deferred shadows with a soft radius so the ball and panels cast realistic shadows onto the grass. Both effects work together to make the flat-screen view read as genuinely three-dimensional.

Swipe up to kick. Aim at the panels.
Knock them all down and reset for another round.

Two Steps to Play

1
Swipe to kick the ball

Swipe upward on the screen to kick the ball toward the goal. The starting position of your swipe (low on screen = high shot, high on screen = low shot) and the horizontal direction (left/right = curve) both affect the trajectory. Short swipes below the threshold do nothing — make it a solid swipe.

2
Reset when you're ready for another round

After three seconds the ball resets to its starting position automatically. Tap the reset button in the lower-left corner any time to restore all panels to the goal in a new random arrangement and start fresh.

3
Play again as many times as you like

The panel arrangement reshuffles every time you reset, so no two rounds are ever the same. Try different swipe angles and start positions to knock down all nine panels as cleanly as you can.

Get it on the App Store

Download on the App Store

What Users Are Saying

"Didn't realize the swipe starting position affected the ball height until I accidentally shot one really high. Once I figured that out the game became much more interesting — you can actually aim for specific panels. Watching them tumble with physics is satisfying every time."

— soccer_fan_tanaka

"The graphics are much better than I expected for a casual game. The grass texture, the clouds, the shadows — even the ball pattern looks right. Shooting the panels and watching them fly is a great stress reliever for a few minutes."

— graphics_fan_sato

"Found out you can curve the ball left and right by adjusting the horizontal swipe. Now I specifically try to knock the corner panels with a curved shot. Simple premise but there's more depth to it than it looks. Good pick-up-and-play game."

— casual_gamer_yamada

Frequently Asked Questions

Find answers to common questions below.

QThe ball isn't going where I want it to.

ASwipe upward firmly — very short swipes are filtered out. Where you start the swipe on the screen controls the height: low on screen = high arc, high on screen = low fast shot. Add a left or right component to curve the ball sideways. Experiment with different swipe start positions to find the trajectory you want.
QCan I kick the ball again immediately after shooting?

AOnce kicked, the ball resets automatically after three seconds. While it is in flight a second kick is not possible. If you want to reset immediately, tap the reset button in the lower-left corner to bring the ball and all panels back to their starting state.
QAre the panel numbers in the same arrangement every time?

ANo — the numbers 1 through 9 are shuffled into a random order each time the game starts or resets. The arrangement will be different on every round.
QHow do I reset the game?

ATap the circular arrow button in the lower-left corner of the screen. This removes all current panels and joints, creates a fresh set with a new random number arrangement, and returns the ball to its starting position.
QCan I hide the banner ad?

AThe current version does not include an option to remove the ad. The banner appears at the bottom of the screen below the game view and does not overlap the swipe area, so it should not affect gameplay.

Get it on the App Store

Download on the App Store
App Gallery