A VR controller that makes firing a virtual gun feel physical

A VR controller that makes firing a virtual gun feel physical

Hardware Prototyping

Interaction Design

VR

Arduino + Unity

Role

Team lead; worked across hardware, code and design

Scope

Hardware prototype, Unity demo, demo video

Team

Jonathan, Michael, Piya, Yuen Ying and me

Timeline

7 weeks, university project

Outcome

Working prototype with air, heat and vibration feedback

Status

Completed

In short

Air Blaster 9000 is a VR controller attachment that makes firing a virtual gun feel physical. It adds air bursts on the back of the hand, heat on the palm that builds up as you keep shooting, and vibration.

We built it as a team of five over seven weeks at university, using a Meta Quest 2, an Arduino Uno and Unity.

001

Air Blaster 9000 in use. The Unity shooting range (left) and a player testing the controller attachment with a Meta Quest 2 (right).

The problem

VR controllers give very little physical feedback. In first-person shooter games, pulling the trigger feels much like pressing any other button, which breaks the sense of being in the game.

We wanted to make shooting feel physical while still working with the standard Meta Quest 2 controllers.

002

Ideation

After looking at existing controllers, each of us sketched ideas, from rough to detailed. We compared them as a team and chose to build around the feeling of a gun’s recoil.

003

Ideation sketches. Our individual concepts for hand-based feedback (left), and ideas grouped by sensation, from temperature to texture and touch (right).

Changing the design when the first idea didn’t work

Our first design used a nozzle at the front of the controller to blast air and push the hand up, like recoil. The compressor we had wasn’t strong enough, and a stronger one with a pressure regulator and solenoid valves was over our budget.

So we redesigned around three smaller types of feedback, all focused on the hand:

  • Air: a nozzle on a moving servo arm blows air across the back of the hand when you fire, stronger for bigger guns

  • Heat: a heating pad on the palm warms up the longer you keep shooting, then cools down

  • Vibration: the Quest 2 controller’s built-in motors, varied by gun type

Together, they made firing feel physical without needing full recoil.

004

The final prototype. The 3D-printed grip with heating pad, servo and air nozzle on a Quest 2 controller, and the full setup with the control box and Unity demo.

How it works

Unity runs the VR game and sends a signal to the Arduino each time a gun fires. The Arduino switches the air compressor and the heating pad on and off.

We started with a relay for the compressor, but it couldn’t switch fast enough to keep up with the trigger, so we replaced it with a MOSFET transistor. The heating pad didn’t need fast switching, so it stayed on a relay. The mount that holds everything on the controller is a mix of 3D-printed and laser-cut parts.

005

How the system fits together. The Arduino, MOSFET, relay and air compressor in the control box, connected to the servo, nozzle and heating pad on the controller.

The demo

We built a simple shooting range in Unity with three targets and two guns, a pistol and a rifle. The pistol gives a shorter, weaker burst of air and vibration, the rifle a longer, stronger one, and the controller warms up after a few shots.

006

The demo. Firing the pistol and rifle in our Unity shooting range, with air, heat and vibration feedback.

Webjet rebrand

Building the Plane While Flying It

Ask Federico