Hello world! On the FusedVR team, we’ve been building an AR/VR prototype every week for over a year. Our prototypes drive our content development and now we’re sharing our learnings with everyone. Watch the thread to keep up with our work, tell us what you want to see built, and learn from our prototype breakdowns.
Happy building!
Breakdown #1: HADOKEN!!! Blasting our way to three design tips.
One of the best parts about building a livestream tutorial on fireball prototypes was having Street Fighter chiptunes and Dragon Ball Z themes stuck in our heads for a week. Even more, the prototype process brought up three areas of design tips. Check out our steam for details, but below is a summary of what we found interesting:
- Using particle textures to create a sense of depth.
- Bringing an energy source to life with light.
- Combining audio and haptics.
To use particle textures for depth, we found the quantity and motion of texture sprites are critical. A YouTube search showed endless examples of 2D texture-based fireballs. One video even shows how to recreate an entire Street Fighter game in Unity! To create the illusion of a 3D fireball, however, we thought we may need a 3D mesh. Fortunately, taking a chance on an implementation we found from a fellow Youtuber worked wonders. The implementation emits 2D sprites in a sphere, overlaps the sprites on top of each other, and rotates the sprites randomly. The result is the illusion of a living fireball created entirely from 2D sprites!

During the livestream, an unplanned extension showed the value of using lights to make energy sources feel more alive. For our fireball, we assigned a light to the particle system so we could see dynamic lighting effects as fireballs flew. The result added much more life to the scene.

Our favorite design points came from using haptics as a hint for fireball behavior and tightly coupling haptics with audio. Varying the controller vibration for one- and two-handed fireballs added intuition for how fireballs differed physically. As for audio, we’ve learned it’s critical to make vibrations feel as if they are emanating from an audio source. Practically, that means using subtle vibrations (don’t immediately jump to the highest values, most people overdo haptics) and making audio effects loud enough to drown out the noises of controller vibrations.
We never thought we’d be able to throw fireballs like our favorite characters in Street Fighter or Dragon Ball Z. Thanks Unity and VR! Extra shout out to devPuppy Inc for riffing on our livestream to create an extended fireball in Unity!
Happy building!
Breakdown #2: Building a VR Bow and Arrow Grappling Hook
What do you get when you cross a bow and arrow with a grappling hook in VR? A super exciting way to move around a virtual environment! Huge shout out to Ben Lang for mentioning this idea on Twitter!

Implementation
In the past, we made a tutorial on how to implement your own bow and arrow with the HTC Vive. But to speed up implementation of this mechanic, we looked to the SteamVR Interaction System, which includes an open source, highly polished Bow and Arrow that happens to also have been used in The Lab.

Using this as base, we simply needed to tweak their implementations by adding some C# events that we could listen to in the Arrow.cs script.

With these events called in the right place, we could then write our own script to listen and handle the behavior of our grappling hook. Specifically, when the arrow is released, we want to start drawing the line for our chain. And when the arrow lands, we want to teleport along the path the arrow took. To do this, we created a Line Renderer for each arrow that is released and every frame we add the position of the arrow to the Line Renderer, so that it can appropriately draw the chain
And 50 lines of code later, we were able to teleport anywhere in our scene! Check out our tutorial video if you want to see for yourself!
Future Improvements
- If we hook a small object, bringing that object towards us instead of teleporting (as mentioned in Ben’s tweet)
- Using an FOV limiter like in Eagle Flight to mitigate motion sickness.
- Tweakable stopping distance to mitigate vergence-accommodation issues.
To Conclude
Of course, this movement scheme is not for the faint of heart. But if motion sickness is not a factor for you, then by all means have fun pretending you are the Green Arrow as you move around the forest! Something I also learned on Twitter is that an FOV limiter will not mitigate eye strain issues from quickly moving to big objects, which is a result of the vergence- accommodation conflict. So that is another thing to keep in mind if you easily get eye-strain in VR.
If you are interested in building this for yourself, check out the edited recording of our live stream below, where we will be walking you through step-by-step on how to build it yourself.
Happy building!
Breakdown #3: Fallout VR VATS
Implementation
Before we dive into the details, let’s clarify our prototype approach.
- Our prototype slows time, highlights body parts, and shoots bullets.
- Our prototype skips the VATS percentage system. For more, check out the Future Improvements section.
- We prototyped the Bloody Mess perk sans blood!
Slowing time can be accomplished by changing the Time.timeScale value. We called ToggleVats on the press of the touchpad and learned a timeScale value of 0.05f-0.1f works great for VATS.

The next challenge was highlighting body parts. That’s where VRTK, a Unity VR interaction toolkit developed by the Stone Fox, really shined. To summarize, all we really had to do was add the VRTK_InteractableObject component to a GameObject and call ToggleHighlight at the right time. Check out our video for a step-by-step walkthrough.

Shooting bullets required spawning a GameObject and adding a force. To get Bloody Mess to work, we created a basic rig then applied an explosion force at random if a bullet hit. For a complete VATS implementation, only colliders on the targeted body should be subject to the explosion force.
We used the default code for an explosion force found on Unity’s online documentation. Configuring the explosion force depends on the rig and rigidbodies you use but, once you’re set, the results look great!
Future Improvements
If we kept working on our prototype, we’d consider explosions, bullet trails, and more physics tweaks. We would also give the percentage system a try. Originally, we believed the percentage system would remove the joy in lining up a shot. Why aim only to miss?

On second thought, the percentage system definitely adds valuable suspense. If you want to try a percentage system, here’s a simple approach:
- Add a float called hitProbability that starts at value 1f to the VatsHandler script.
- For every consecutive shot during VATS mode, decrement hitProbabilityby a fixed amount.
- Randomly generate a number between 0f and 1f. If that number is greater than hitProbability, turn off the bullet’s collider.
- When you leave VATS mode, reset hitProbability to 1.
- Extra Credit: use a raycast to check what body part the bullet is targeting and modify the hitProbability accordingly.
To Conclude
Our prototype was further evidence of a lesson we’ve seen over and over. Playing with physics and time in VR is a very simple way to create a fun experience. We’re not sure why but we have some guesses:
- Delight in a virtual world is all about setting expectations for a user and making good on those expectations. When the world works the way you expect, you’re stoked! When the world does not, you’re sad. In that way, someone trying your VR experience for the first time is a lot like a baby learning about the real world. Physics simulations are among the easiest ways to let anyone test a world — real or virtual.
- Playing with time in VR enables you to experience something you’ve never seen in real life but have always imagined. That’s living the dream — literally!
It’s never easy to take on a beloved mechanic, but the process is a blast! Check out our tutorial, share your thoughts on how VATS should work in VR, and let us know if you create any extensions so we can showcase your work. Happy building!