Booper
More actions
Boopers are a very common Avatar system in Resonite. They are scripted interactions that happen when a user either physically presses or laser clicks on the nose or a different part of an avatar. Often this plays a sound effect and can come with visual effects like a squeezed nose, particle effects but can be more advanced, including counters or a mini game.
Examples
- Audio
- Voice Clips
- Music
- Sound effects
- Animal Noises
- Particles
- Interaction with other systems
- Counting the total number of boops on a leaderboard
- Making the booped user switch clothes or color
- Blendshape Toggles
- Denting in the nose as if it was pressed in by the booping user
- Changing facial expressions
- Affecting the booping User
- Applying a character force
- Having them play a mini game
Tutorials

The simplest Boopers can be as easy as having a SphereCollider, a TouchButton and a ButtonAudioClipPlayer on a slot under your head or nose bones.
A better way involves going to the head or nose slot in your avatar's armature and creating a child. Then add a SphereCollider component before setting it's radius to something that roughly matches your nose, and move that slot to where the nose is. Pressing 'Visualize Collider' will make setting the collider size and position easier, shown green in the example.
Oftentimes the effects are also randomized and have a varying chance of occurring. This can easily be achieved by using a RandomAudioClipPlayer and changing the weight for each audio clip
On the button components, AcceptRemoteTouch and AcceptPhysicalTouch gives you a choice if laser booping or physical booping is allowed.
Simple sound
Add the TouchButton and a ButtonAudioClipPlayer or RandomAudioClipPlayer components, then find a StaticAudioClip or use the Microphone tool to record a sound. Then press the 'Add Clip' button on the player component and drop either an audio Player or a StaticAudioClip into the 'Clip' field.
Nose squish

Replacing TouchButton with PhysicalButton allows for an easy way to drive a 'squish' blendshape by using _currentPressingDepth to either directly(If 'unsquished' is 0) or via ValueGradientDriver(float) if the direction or value needs to be changed. It also be used to drive things such as parts of the eye EyeManager to for example lid/close the eyes based on touch.
The example on the right uses a ValueGradientDriver(float3) to squish a slot that could be an avatar nose bone if present.
Because PhysicalButton moves the slot it's placed in, an empty slot should be created to allow the button to be positioned with the child slot containing the actual collider and button components. PressAxis will need to be changed to move the button in the correct direction and PressDepth controls how far the button moves. Pressing 'Visualize Collider' will help with these tasks.
Finally sound can be added the same as the 'Simple Sound' example.
Flux
More advanced boopers typically involve using ProtoFlux. After adding the TouchButton you can drag that component into the Button field of a ButtonEvents node. After that you can trigger anything you want with the outputs of ButtonEvents.
Standards
Avatar Standard also defines Dynamic variables and a standardized way of positioning booper on a given Avatar. More info on how to set it up can be found on the Booper Section.
Do note that it's not required to follow the Standard. But it can be use full for other Systems to integrate and interact with the booper.