CREATE IN HORIZON WORLDS

Getting Started


What does is it mean to be a creator in Horizon Worlds?
As a creator in Horizon Worlds, you can create new worlds and, through Build Mode, build objects and add sounds in those worlds.
Only the creator of a world can:
  • Publish and unpublish the world.
  • Add and remove collaborators to build the world together.
  • Duplicate the world and everything in it.
  • Delete the world.
You own the intellectual property rights, things like copyright or trademarks, in the content you create and share on Horizon Worlds. However, to provide our services we need you to give us some legal permissions, known as a license, to use this content. Nothing in our terms takes away the rights you have to your own content, and you are free to share your content with anyone else, wherever you want. This is solely for the purposes of providing and improving our products and services. You can read more about this in the Horizon Worlds Terms of Service .

Was this answer helpful?


Create a new world in Horizon Worlds
To create a new world:
  1. 1.
    Turn over your left wrist and select the Three Line icon then select Create.
  2. 2.
    Select Templates, then select New Project.
  3. 3.
    An empty world will begin loading for you.
  4. 4.
    Switch to Build Mode by pushing your right thumbstick down and selecting the Build icon.
When you first enter an unpublished world, you’ll be in Preview Mode. This means you can’t edit or build, and you can move around the same way you do in the rest of Horizon Worlds. Preview Mode is how others will see and interact with your world once it’s published.
To build or make any kind of edits to your world, make sure you’re in Build Mode.

Was this answer helpful?


How do I use the Creator Menu in Horizon Worlds?
When in Build Mode, press the menu button on your left controller to open your Creator Menu. Here’s where you’ll find everything from shapes and gizmos to color palettes and publishing settings. The four main categories in the menu (from left to right) are: Build, Style, Publish, and Settings.
Building with Shapes
Tap the Build icon in the dock. This is where you can create objects like shapes (primitives), gizmos and sounds. In order to create a new object, make sure you’re using the Grab tool.
To create an object:
  1. 1.
    From your Creator Menu, select Shapes, then highlight a shape with either cursor.
  2. 2.
    Grab the shapes and drag it into your world.
Shapes can be scaled by:
  1. 1.
    Grabbing the shape using both controllers.
  2. 2.
    Moving your hands closer or farther apart.
There are also three handles ou can use on a shape to stretch, move and rotate the shape along a single axis.
To stretch a shape:
  1. 1.
    Highlight the shape with using either cursor.
  2. 2.
    Grab a Stretch handle to stretch a single side.
Highlighting the Stretch handle reveals the Move handle and Rotate handle, which can be grabbed and used the same way.
Styling Your Shapes
Tap the Brush icon to go to Style. Here's where you can use the Paint tool to:
  • Paint shapes.
  • Add a material to shapes.
  • Adjust material intensity.
To paint a shape:
  1. 1.
    Tap a color using either controller.
  2. 2.
    Highlight the shape with your primary controller.
  3. 3.
    Click the index trigger to apply the color.
A material can also be applied to shapes the same way. These materials only affect the appearance of the object and include Plastic, Metal and Glow.
For Plastic and Metal, adjusting the Material intensity changes how much light gets reflected off of the object.
For Glow, adjusting the Material intensity changes how much light the object emits.
Publishing Your World
Select the Publish icon in the dock to go to Publish. From here, you can:
  • Add details to your world.
  • Check your world's capacity levels.
  • Adjust material intensity.
Settings
Tap the Settings icon to go to Settings. From here, you can:
  • Change your primary hand.
  • Adjust the size and angle objects will snap to when snapping is turned on.
  • Play, stop and reset your world.
To turn snapping on or off, use the thumbstick on your secondary controller to select Snap.

Was this answer helpful?


How do I use my controllers while in Build Mode in Horizon Worlds?
Controllers replace your hands in Build Mode. Your primary controller has your main tools, while your secondary controller has supporting actions. Controllers can display up to four options at a time which can be selected by pushing the thumbstick up, down, left or right.
The teardrop-shaped cursor on each controller indicates which tool you’re currently using, and is the main way to interact with objects in the world. Placing the tip of either cursor inside an object will highlight it and reveal its bounding box. The bounding box provides a visual cue as to which object is currently being highlighted, selected or manipulated.
Moving in Build Mode
Moving Around
To move around, use a reach and pull motion:
  1. 1.
    Reach either hand forward.
  2. 2.
    Hold down the grip button of your Touch controller.
  3. 3.
    Pull your hand back and release the grip.
Alternate your hands to go faster.
Turning Around
To turn around:
  1. 1.
    Hold down the grip on both hands.
  2. 2.
    Move your hands as if turning a wheel.
Scaling Your Avatar
To make your avatar larger:
  1. 1.
    Hold down both of the grip buttons on your Touch controllers.
  2. 2.
    Move your hands closer together.
To make your avatar smaller:
  1. 1.
    Hold down both of the grip buttons on your Touch controllers.
  2. 2.
    Move your hands farther apart.
Understanding the Controllers
Changing Your Primary Hand
  1. 1.
    While in Build Mode, select the Menu icon on your left controller to open the Creator Menu.
  2. 2.
    Select the Settings icon and go to Settings.
  3. 3.
    Select Build Settings and then select Dominant Hand.
  4. 4.
    Select Right or Left.
Primary Controller Options
  • Grab Tool: Used to select and move objects. Once an object is highlighted, hold down the index trigger to grab and move it around. You can also hold down the index trigger in empty space and swipe through an object to select it.
  • Duplicate Tool: Creates a copy of an object. Highlight an object and hold down the index trigger to grab a copy of it. You can also grab a Move handle to duplicate the object along an axis.
  • Lock and Unlock Tool: Prevents an object from being edited, moved or deleted. Once an object is highlighted, click the index trigger to lock it, and again to unlock it.
  • Paint Tool: Used to add color and a material to shapes. Highlight the shape and click the index trigger to apply the color or material. See the Style section for more about using this tool.
Note: Switch back to the Grab tool after using any other tool to avoid accidental duplicates, locking or painting.

Was this answer helpful?

Code Blocks and Gizmos


How do I use code blocks in Horizon Worlds?
Item in LibraryItem in FolderParametersDescriptionTips
Events
When world is startedWhen world is startedEvent runs when world starts. This will happen when the first person enters the world's instance.
When event is receivedWhen event[myevent] with [obj] is receivedEvent runs when a custom event is received by this object. The custom event can be sent by the same script or a script on another object.
When trigger is entered by objectWhen event [triggerenter] with [obj] is receivedObject: The object that entered triggerEvent runs when an object enters the trigger gizmo.Note: The trigger must be configured to detect objects with a specific tag, and the object must have that tag.
When trigger is exited by objectWhen event [triggerexit] with [obj] is receivedObject: The object that exited triggerEvent runs when an object exits the trigger gizmo.Note: The trigger must be configured to detect objects with a specific tag, and the object must have that tag.
When trigger is entered by playerWhen event [triggerenter] with [player] is receivedPlayer: The player that entered the triggerEvent runs when a player enters the trigger gizmo.Note: The trigger must be configured to detect players.
When trigger is exited by playerWhen event [triggerexit] with [player] is receivedPlayer: The player that exited the triggerEvent runs when a player exits the trigger gizmo.Note: The trigger must be configured to detect players.
When colliding with objectWhen event [collisionenter] with [object] is receivedObject: The object that collided with the object that this script is attached to.Event runs when object collides with another object.Note: The object must be configured to detect collisions.
When colliding with playerWhen event [collisionenter] with [player] is receivedPlayer: The player that collided with the object this script it attached to.Event runs when object collides with the players head or torso.Note: The object must be configured to detect collisions.
When object is grabbed by playerWhen event [grabstart] with [player] is receivedPlayer: The player that grabbed the object that this script it attached toEvent runs when this object is grabbed by a player.
When object is released by playerWhen event [grabend] with [player] is receivedPlayer: The player that released the object that this script it attached toEvent runs when this object is released by a player.
When object is attached to playerWhen event [attachstart] with [player] is receivedPlayer: The player that attached the object that this script it attached toEvent runs when this object is attached to a player.Note: The object being manipulated must be marked as "Interactive" with "Grabbable" in order to be set as attachable.
When object is unattached from playerWhen event [attachend] with [player] is receivedPlayer: The player that unattached the object that this script it attached toEvent runs when this object is detached from a player.Note: The object being manipulated must be marked as "Interactive" with "Grabbable" in order to be set as attachable.
When index trigger is pressedWhen event [indextriggerdown] with [player] is received while self is grabbedPlayer: The player that pressed their trigger while holding the object that this script it attached toEvent runs when the index trigger on the oculus controller is pressed. This event will only work on an object that is being grabbed by a player.
When index trigger is releasedWhen event [indextriggerup] with [player] is received while self is grabbedPlayer: The player that released their trigger while holding the object that this script it attached toEvent runs when the index trigger on the oculus controller is released. This event will only work on an object that is being grabbed by a player.
When button1 is pressedWhen event [button1down] with [player] is received while self is grabbedPlayer: The player that pressed button 1 while holding the object that this script it attached toEvent runs when button 1 on the oculus controller is pressed. This event will only run on an object that is being grabbed by the hand that is holding the controller.Note: This event will only run on an object that is being grabbed by the hand that is holding the controller.
When button1 is releasedWhen event [button1up] with [player] is received while self is grabbedPlayer: The player that released button 1 while holding the object that this script it attached toEvent runs when button 1 on the oculus controller is released. This event will only run on an object that is being grabbed by the hand that is holding the controller.Note: This event will only run on an object that is being grabbed by the hand that is holding the controller.
When button2 is pressedWhen event [button2down] with [player] is received while self is grabbedPlayer: The player that released button 2 while holding the object that this script it attached toEvent runs when button 2 on the oculus controller is pressed. This event will only run on an object that is being grabbed by the hand that is holding the controller.Note: This event will only run on an object that is being grabbed by the hand that is holding the controller.
When button2 is releasedWhen event [button2up] with [player] is received while self is grabbedPlayer: The player that released button 2 while holding the object that this script it attached toEvent runs when button 2 on the oculus controller is released. This event will only run on an object that is being grabbed by the hand that is holding the controller.Note: This event will only run on an object that is being grabbed by the hand that is holding the controller.
Send event to objectSend event [myevent] to [self] with [param]Object: The object that the event is sent to param: The parameters the event will receiveSends a custom event to an object variable. The event will be received by the object that is being referenced by the object variable.
Send event with delaySend event [myevent] to [self] after [number] secondsObject: The object the event is sent to number: The number of seconds to delaySends a custom event to an object variable, with a set delay. The event will be received by the object that is being referenced by the object variable.
Cancel sending event with delayCancel sending event [myevent] to [self]Object: The object to stop sending a custom event toCancels a custom event from being sent.
Connections
Connect to eventconnect [self] [triggerenter] to local event [enter]object: The object the where the non-local script event fires event: The event in the non-local script event: The event in the local script that the non-local script should connect to Connects an event in another object to an event in the local script, so when the event in the other object is triggered, the event in the local script is triggered too.Note: This is useful for connecting multiple triggers in a script to one or multiple events in order to make a triggerable system.
Motion Tab
Instant Motion
Move toaction [moveto with [vector 1 / 0 / 0]] on [self]vector: The position in world space that the object moves to object: The object that the motion applies toInstantly moves the object to the coordinates provided.Note: The object being manipulated must be marked as "Interactive" or "Animated" in the properties panel of the object.
Move byaction [move with [vector1 / 0 / 0]] on [self]vector: The direction and distance the object will move by object: The object that the motion applies toInstantly moves the object relative to its current position by adding the vector to the current position.
Rotate toaction [rotateto with [rotation 90 / 0 / 0]] on [self]rotation: The angle the object will rotate to object: The object that the motion applies toInstantly rotates the object to the rotation provided.
Rotate byaction [rotate with [rotation 90/ 0 / 0]] on [self]rotation: The angle the object will rotate by object: The object that the motion applies toInstantly rotates the object by adding the supplied rotation to the current rotation.
Scale toaction [scale with [vector 1 / 0 / 0]] on self]]vector: The size the object will scale to object: The object that the motion applies toInstantly sets the scale to the value provided.
Motion Over Time
Move to over timeaction [moveto with [vector 1 / 0 / 0] over [number {1} sec]] on [self]vector: The positon in world space that the object moves to number: The number of seconds it takes to move object: The object that the motion applies to Moves the object along a line from its current position to a new coordinate over the given time.
Move by over timeaction [move with [vector 1 / 0 / 0] over [number {1} sec]] on [self]vector: The direction and distance the object will move by number: The number of seconds it takes to move object: The object that the motion applies toMoves the object along a line from its current position to a new coordinate that is the sum of the current position and the given coordinate, over the given time.
Rotate to over timeaction [rotateto with [rotation 90 / 0 / 0] over [number {1} sec]] on [self]rotation: The angle the object will rotate to number: the number of seconds it takes to rotate object: The object that the motion applies toRotates the object from its current rotation to the given rotation over the given time.
Rotate by over timeaction [rotate with [rotation 90 / 0 / 0] over [number {1} sec]] on [self]rotation: The angle the object will rotate by number: the number of seconds it takes to rotate object: The object that the motion applies toRotates the object from its current rotation by the given rotation over the given time.
Scale to over timeaction [scale with [vector 1/ 1/ 1] over [number {1} sec]] on [self]vector: The size the object will scale to number: the number of seconds it takes to scale object: The object that the motion applies toScales the object from its current scale to the given scale over the given time.
Player Motion
Respawn playeraction [respawn with [param]] on [self]playerid: The player that will be respawned object: The spawn point to respawn them toTeleports a player to a spawn point.
Physical Motion
Disable object physical motiondisable [self] physical motionobject: The object that physical motion is being disabled onLocks a physics object in place. Note: The object being manipulated must be marked as "Interactive" with "Physics" in the properties panel of the object.
Enable object physical motionenable [self] physical motionobject: The object that physical motion is being enabled onUnlocks a physics object, allowing it to be moved.Note: The object being manipulated must be marked as "Interactive" with "Physics" in the properties panel of the object.
Pushaction [+Velocity with [vector 1/ 1/ 1]] on [self]vector: The velocity being added object: The object that physical motion is being applied toThe object's velocity becomes equal to its current velocity, plus the given velocity.Note: The object being manipulated must be marked as "Interactive" with "Physics" in the properties panel of the object.
Push with massaction [+impulse with [vector 1/ 0/ 0]] on [self]vector: The velocity being added object: The object that physical motion is being applied toThe object's velocity becomes equal to its current velocity, plus the given velocity divided by the object's mass (heavier objects have their velocity adjusted less).Note: The object being manipulated must be marked as "Interactive" with "Physics" in the properties panel of the object.
Push in local spaceaction [+VelLocal with [vector 1/ 0/ 0]] on [self]vector: The velocity being added object: The object that physical motion is being applied toThe given velocity is rotated to the object's rotation, then a Push runs (x becomes left/right, y becomes above/below, z becomes forward/backward).Note: The object being manipulated must be marked as "Interactive" with "Physics" in the properties panel of the object.
Push in local space with massaction [+ImpLocal with [vector 1/ 0 / 0]] on [self]vector: The velocity being added object: The object that physical motion is being applied toThe given velocity is rotated to the object's rotation, then a Push with Mass runs (x becomes left/right, y becomes above/below, z becomes forward/backward).Note: The object being manipulated must be marked as "Interactive" with "Physics" in the properties panel of the object.
Spin action [+AngVel with [vector 1/ 0/ 0]] on [self]vector: The angular velocity being added object: The object that physical motion is being applied toThe object's angular velocity becomes equal to its current angular velocity, plus the given angular velocity.Note: The object being manipulated must be marked as "Interactive" with "Physics" in the properties panel of the object.
Spin in local spaceaction [+AngVelLocal with [vector 1/ 0/ 0]] on [self]vector: The angular velocity being added object: The object that physical motion is being applied toThe given velocity is rotated to the object's current rotation, then a Spin runs (x becomes pitch, y becomes yaw, z becomes roll).Note: The object being manipulated must be marked as "Interactive" with "Physics" in the properties panel of the object.
Stop physical motionstop physical motion [self]object: The object that the physical motion is being stopped onThe object's velocity and angular velocity both become zero.Note: The object being manipulated must be marked as "Interactive" with "Physics" in the properties panel of the object.
Launch from objectaction [LaunchFrom with [self] [number {10}]] on [self]object: The object whose position and direction will be used to launch from number: The speed to launch it at object: The object that will be launchedMakes the object become owned by the same owner of the "launch from" object (i.e. object specified by the first parameter), sets the position and rotation of the object to match that of the "launch from" object, and then sets the object's velocity to match its forward direction with a magnitude (speed) equal to the value of the second parameter.Note: The object being manipulated must be marked as "Interactive" with "Physics" in the properties panel of the object.
Actions Tab
Object
Show objectshow [self]object: The object that will turn visibleMakes object visible in your world.Note: This will currently also affect collisions on an object. The object will be made collidable.
Hide objecthide [self]object: The object that will turn hiddenHides the object in your world.Note: This will currently also affect collisions on an object. The object will have collisions turned off.
Paint objectaction color with [color 1/ 0/ 0] on [self]color: The rgb color to paint the object with object: The object that will be paintedSets the color of the object.
Enable objectenable [self]object: The trigger that will be enabledEnables a trigger's ability to detect people or objects. This can only be used on triggers.
Disable objectdisable [self]object: The trigger that will be disabledDisables a trigger's ability to detect people or objects. This can only be used on triggers.
Set simulatedaction [setsimulated with boolean {true/false}] on [self]boolean: The true or false value that the simulated property will be set to object: The object that will have its simulation setEnables or disables the "simulated" property. If off, the object cannot move.
Set gravityaction [setgravity with boolean {true/false}] on [self]boolean: The true or false value that the gravity property will be set to object: The object that will have its simulation setEnables or disables gravity simulation on this object.If on, the object will fall to the floor. If off, it wil act like it's floating in space.
TextDisplay textaction [display with [number {1}] on [self]string/number: The value the text gizmo will display object: The text gizmo that displays the string/numberSets the displayed text in the text gizmo.
Animation
Play animationplay animation on [self]object: The object that will play its animationPlays the object's animation.
Pause animationpause animation on [self]object: The object that will pause its animationPauses the object's animation.
Stop animationstop animation on [self]object: The object to stop its animation
Sound
Play soundplay sound on [self]object: The sound gizmo that will playPlays a sound gizmo.Note: A sound must be stopped before it can be played again.
Pause soundpause sound on [self]object: The sound gizmo that will pausePauses a sound gizmo.Note: A sound must be stopped before it can be played again.
Stop soundstop sound on [self]object: The sound gizmo that will stopStops a sound gizmo.Note: A sound must be stopped before it can be played again.
Particles and Trails
Play visual fxplay visual effects on [self]object: The visual effect gizmo that will playPlays a visual effects gizmo.
Stop visual fxstop visual effects on [self]object: The visual effect gizmo that will stopStops a visual effects gizmo.
World
Reset world statereset world stateResets the world back to its inital state.
Math
Logic
"=="[a] == [b]"true" if both values are the same.
!=[a] != [b]"true" if both values are not same.
less than symbol [a] [b]"true" if the first value is less than the second value
> [a] > [b]"true" if the first value is greater than the second value
and[a] and [b]"true" if both values are true.
notnot [a]toggles a boolean value from true to false, or false to true. (I think this correct?)
or[a] or [b]"true" if one of the values is true.
Basic Operations
"+"[a] + [b]Returns the sum of two numbers.
- [a] - [b]Returns the difference of two numbers.
* [a] * [b]Returns the result of two multiplied numbers
/ [a] / [b]Returns the result of the first number divided by the second number.
% [a] % [b]Returns the "remainder" of the first number divided by the second number. Useful for making counters that count up to a certain number and then go back to 0.
Basic Math
absabs [n]Returns the positive value of a number. So, abs -10 = 10 and abs 3 = 3.
ceilceil [n]Rounds a decimal number up to the next largest whole number.
clampclamp [value] [min] [max]If the value is less than the smallest number, return the smallest number. If the value is larger than the biggest number, return the biggest number. Otherwise return the value.
floorfloor [n]Rounds a decimal number down to the next smallest whole number.
fracfrac [n]
lerplerp [from] [to] [alpha]Given a minimum number, maximum number, and an interpolated value between those numbers, lerp will return a value that represents the point of the interpolated value.
maxmax [a] [b]Returns the biggest number
minmin [a] [b]Returns the smalles number
sqrtsqrt [n]Returns the square root of a number
Advanced Math
powpow [number] [power]
coscos [radians]Returns the cosine value of a number, from -1.0 to 1.0.
sinsin [radians]Returns the sine value of a number, from -1.0 to 1.0.
tantan [radians]
acosacos [radians]
asinasin [radians]
atan2atan2 [y] [x]
expexp [power]
log10log10 [number]
random number with decimalsrandom between [min] and [max]Returns a value that can contain fractional decimals, between the first number and the second number.Note: This is inclusive of the [min] value and inclusive of the [max] value.
random numberrandom integer between [min] and [max]Returns a whole number value, between the first number and the second number.Note: This is inclusive of the [min] value and exclusive of the [max] value.
2d perlin noise2d perlin noise [x] [y]Returns a number value based on the perlin noise algorithm.
Object Transformation
position of objectposition of [o]
rotation of objectrotation of [o]
scale of objectscale of [o]
velocity of objectvelocity of [o]
forward direction of objectforward direction of [object]
upward direction of objectupward direction of [object]
Vector Math
new vector from xyznew vector [x] [y] [z]
x of vectorx of [vector]
y of vectory of [vector]
z of vectorz of [vector]
normalizenormalize [vector]
dotdot [a] [b]
crosscross [a] [b]
distance todistance from [a] to [b]
magnitude ofmagnitutde of [vector]
reflectreflect [vector]
new rotation from xyznew rotation [pitch] [yaw] [roll]
look atlook towards [forward] with up [up]
Color
new color from rgbnew color [r] [g] [b]
rgb to hsvconvert rgb to hsv [color]
hsv to rgbconvert hsv to rgb [color]
get object colorcolor of [o]
Player
Position of player[head] position of [player]Can specify head, torso, left hand, right hand, and foot position of a player.
Forward of player[head] forward of [player]Can specify head, torso, left hand, right hand, and foot forward of a player.
Name of playername of [player]Returns the username of a player.
Text
Length of stringlength of [string]Returns the length of a string.
Variable as string[string] as stringConverts other variables that aren't strings into strings. This is useful when concatenating values that aren’t strings together.
Values
set toset [variable] to [value]
Debuggingdebug printdebug print [value]
Value Input
self(self)Represents the object that the script is attached to.
number input(number [0])A number value.
boolean input[boolean [false])A boolean value.
vector input(vector [0] [0] [0])A vector3 value.
rotation input(rotation [0] [0] [0])A rotation value.
color input(color [1] [1] [1])A color value.
string input(string [.])A string value.

Was this answer helpful?


How do I use the Spawn Point gizmo in Horizon Worlds?
A spawn point represents the player's size and where they will spawn or respawn in the world.
To use the Spawn Point gizmo:
  1. 1.
    From Build Mode, select the Three Line icon, then select the Build icon.
  2. 2.
    Select Gizmos.
  3. 3.
    Grab the Spawn Point gizmo. You can now edit the properties by grabbing the gizmo and selecting the Three Dot icon with your controller.
Turning on Spawn on Start to make a particular spawn point the location where players will initially land when they first enter the world.

Was this answer helpful?


How do I use the Text gizmo in Horizon Worlds?
The Text gizmo lets you display text in your world. You can use the Paint tool to change the text's color.
To use the Text gizmo:
  1. 1.
    From Build Mode, select the Three Line icon, then select the Build icon.
  2. 2.
    Select Gizmos.
  3. 3.
    Grab the Text gizmo and pull it into your world.
  4. 4.
    Edit the text, color and size by grabbing the gizmo and select the Three Dot icon with your controller.

Was this answer helpful?


How do I use the Trigger gizmo in Horizon Worlds?
The Trigger gizmo is used to trigger an event when you enter or exit a specified area.
To use the Trigger gizmo:
  1. 1.
    From Build Mode, select the Three Line icon, then select the Build icon.
  2. 2.
    Select Gizmos.
  3. 3.
    Grab the Trigger gizmo. You can now edit the properties by grabbing the gizmo and selecting the Three Dot icon with your controller.
Things to remember:
  • Each trigger can be activated by either players or objects, but not both. If Triggered By is set to Players, any player in the world will be able to activate the Trigger.
  • If Triggered By is set to Objects Named..., the Triggered by Objects Named field must also be filled out. This field can currently only take one name, and any object with that name will be able to activate the trigger.
  • Note that objects may only have one name (or one word as a name), but multiple objects can have the same name. The size of the trigger area can be adjusted by using the handles, just like the rest of the shapes.

Was this answer helpful?


How do I use the Script gizmo in Horizon Worlds?
To add a script to a world:
  1. 1.
    From Build Mode, select Gizmos.
  2. 2.
    Grab a Script and drag it out into the world.
To write a script:
  1. 1.
    Highlight the script and select the Three Dot icon Properties to open the Script Panel.
  2. 2.
    At the top, name the script.
  3. 3.
    In the left column, tap on a field to add the name of any object you’ll be referencing.
  4. 4.
    In the right column, add variables.
  5. 5.
    Tap New Code Block and select options from the dropdown.
  6. 6.
    Tap Compile when you’re done to save the script.
To attach a script to an object:
  1. 1.
    Open the object’s Properties Panel.
  2. 2.
    At the bottom of the panel, select the script from the dropdown for Attached Script.
To connect an object reference:
  1. 1.
    Open the Properties Panel of the object you want to reference.
  2. 2.
    Grab the Entity Reference connector on the right side of the panel.
  3. 3.
    Attach the connector to the input on the bottom left side of the Properties Panel for the object with the attached script.
Additional things to know about scripting:
  • Make sure to tap Compile after writing a script. Otherwise the script won’t be saved.
  • Scripts need to be attached to an object in order to run.
  • There can only be one script per object.
  • The name of the script will be displayed on the gizmo itself. If you change the name of a script, it won’t automatically update references to that script.
  • Collaborators can see the Script Panel, but they won’t be able to see changes unless the script is compiled and the panel is closed and reopened.
Code Block Reference
To learn more, see our article on using code blocks.

Was this answer helpful?


How do I use the Environment gizmo in Horizon Worlds?
The Environment gizmo lets you access settings for lighting and environment. Keep in mind, you can only have one Environment gizmo per world.
To use the Environment gizmo:
  1. 1.
    From Build Mode, select the Three Line icon, then select the Build icon.
  2. 2.
    Select Gizmos.
  3. 3.
    Grab the Environment gizmo. You can now edit the properties by grabbing the gizmo and selecting the Three Dot icon with your controller.
  4. 4.
    Select an option from the Lighting dropdown to add ambient lighting (or a sky) with a preset color and intensity.
Adjusting Fog Density lets you change how light spreads through the world. The higher the number, the denser the fog, and the harder it will be to see objects at a distance. The fog will take on the color of the ambient lighting (sky).
You can also show or hide the floor grid. The grid is 64 square meters in size, with each tile representing one square meter. The grid can't be edited, moved or selected, and doesn't have a Properties Panel, but it's a solid surface that players and simulated objects can move around on. The grid is only visible from above.

Was this answer helpful?


How do I use the Portal gizmo in Horizon Worlds?
The Portal gizmo is used to teleport players from one world to another.
To use the Portal gizmo:
  1. 1.
    From Build Mode, select the Three Line icon, then select the Build icon.
  2. 2.
    Select Gizmos.
  3. 3.
    Grab the Portal gizmo and pull it into your world. You can now edit the properties by grabbing the gizmo and selecting the Three Dot icon with your controller.
While using a portal, keep in mind:
  • Both worlds must be published.
  • Make sure to enter the exact name of both the creator and the world you're linking to.
  • Make sure the creator doesn't have two worlds with the same name.
  • Users of your world need to touch the portal to teleport.

Was this answer helpful?


How do I use the Sound Recorder gizmo in Horizon Worlds?
The Sound Recorder gizmo lets you record custom sounds from the mic on your headset. Each recording can be up to 30 seconds long.
To record a sound:
  1. 1.
    From Build Mode, select the Three Dot icon, then select the Build icon.
  2. 2.
    Select Gizmos.
  3. 3.
    Grab the Sound Recorder gizmo and pull it into your world.
  4. 4.
    While holding the gizmo, select the Three Dot icon, then select Record.
  5. 5.
    Make a sound, then select Stop to stop recording or select Play to preview the recording.
You can also adjust the following properties for your sound:
  • Looping: Turn this on to loop the sound continuously.
  • Volume: This will adjust the volume your sound is played at inside your world.
  • Pitch: Use this to adjust the playback speed.
  • Play on Start: Turn this on to have the sound start playing as soon as a player enters the world.
  • Global: Turn on this property to make the sound heard globally at the same volume regardless of a player's position in the world. Turning Global off means the sound will be perceived as coming from the gizmo's location in the world.
  • Minimum Distance: The distance (in meters) at which a sound will be heard at maximum volume.
  • Maximum Distance: The distance (in meters) at which a sound will no longer be heard.

Was this answer helpful?

Sounds


How do I add sound to my world in Horizon Worlds?
There are a variety of sounds available to use in Build Mode. You can add them to your world from the Build section of the Creator Menu including:
  • Sound effects
  • Background
  • Music
To add a sound to your world:
  1. 1.
    From your Creator Menu, select Sounds.
  2. 2.
    Find a sound you want, then grab the sound and pull it into your world.
Each sound is a considered to be one object, and all sounds have a properties panel with a Sound tab to preview the sound and make adjustments.
Sound properties include:
  • Preview Audio: Tap Play to hear the sound.
  • Pitch: Use this to adjust the playback speed.
  • Minimum Distance: The distance (in meters) at which a sound will be heard at maximum volume.
  • Maximum Distance: The distance (in meters) at which a sound will no longer be heard.
  • Global: Turn this on to make the sound heard globally at the same volume regardless of a player's position in the world. Turning Global off means the sound will be perceived as coming from the sound's location in the world.
  • Play on Start: Turn this on to have the sound start playing as soon as a player enters the world.
  • Volume: This will adjust the sound's volume.
  • Name: The name of the sound.
Keep in mind: Some properties aren't available for some sounds.

Was this answer helpful?

Physics and Animation


Use physics and animation in Horizon Worlds
Using the Properties Panel
Physics and animation can be added to a world from a shape’s Properties Panel.
To open a shape’s Properties Panel:
  1. 1.
    Highlight or grab the shape.
  2. 2.
    Select icon Properties on your controller.
The Properties Panel for shapes has 3 separate tabs:
  • General
  • Animation
  • Simulation
Like other panels and the Creator Menu, you can select options by tapping on them with your cursor. The Properties Panel can also be grabbed, moved and resized.

General Properties
General properties are static and don’t involve any motion or physics. They can be used in global or local space (like when the object is a child of a group).
Name:
An object’s name is how it will be referenced in scripts. Objects can only have one name, but multiple objects can share the same name.
Visible:
When off, players won’t be able to see the object, but any other properties will still be enabled. It will also have an outline in Build Mode.
Collidable:
Turn on to add a collider to the object. Objects with colliders will not be able to pass through other objects.
Position:
The position of an object, defined by X, Y and Z coordinates.
Rotation:
The rotation of an object, defined by X, Y and Z coordinates.
Scale:
The size of an object, defined by X, Y and Z coordinates.

Animation Properties
Animation properties involve motion, but not physics. Like general properties, they can also be used in global or local space. In local space however, if the parent object has simulation properties on, the animated child object must have the Collidable property off (found in the General tab).
Animation Control:
This lets you record an animation by hand. Tap Record to start recording, grab the object and move it around, and tap Stop to stop recording. To preview your animation, tap Play. Only actual movement can be recorded, so if the object is stationary at any point, that time won’t be included in the recording. Animations can be up to 20 seconds long.
Loop:
Select whether or how the animation should repeat after it’s finished. Once will play the animation only once, Loop will continuously play the animation by teleporting the object back to its starting point each time, and Yoyo will continuously play the animation forward and then in reverse.
Play on Start:
When on, the animation will play as soon as a player enters the world. To move an object with this property, first turn Play on Start off to avoid triggering the animation.
Animate Group:
Plays the animation on all objects within the same group.
Speed:
The speed of the animation in FPS (frames per second).
If an object has animation properties on, any simulation properties or scripted motion (motion due to a script) will be canceled out.
To learn more about animation, follow our video.

Simulation Properties
Simulation properties involve motion due to physics. They can only be used in global space, meaning that if a child object is simulated, it will ignore the parent object’s motion.
Gravity:
By default, objects will stay wherever they’re placed in the world. When Gravity is on (along with Simulated), objects will fall until they hit another object or the floor. If an object continues to fall and gets lost, you can reset the world by going to Settings in your Creator Menu and tapping the reset icon on the left side.
Physics Material:
Physics materials have preset values for density, drag (air resistance), bounciness and friction, and do not affect an object’s appearance or any sound it may make.
Grabbable:
Allows players to grab the object.
Simulated:
Turns on physics.

Available physics materials include:

Default:
The density, bounciness, and drag are the average (mean) of the values of the other materials with some friction.
Feather:
The only material with a different drag value than the others, and the least dense. When dropped or thrown, objects will rapidly slow down and seem to float.
Hardwood:
The material with the highest friction values, and the third densest. Objects will be heavy and hard to push.
Ice:
Objects will slide with little effort, slide for quite a while when pushed, and bounce very little.
Metal:
The densest material (about 3 times denser that the Default material). Unlike Hardwood, it has lower than average friction values while still being harder to move than either Ice or Superice materials.
Rubberball:
A material with high bounciness and less than average density. When an object is dropped, it will bounce up to 80% of the initial drop height as opposed to the 10–20% of most other materials.
Softwood:
A material that’s less than half as dense as Hardwood and somewhat bouncier (similar to the Rubberball and Superball materials). Objects will be hard to move but slightly easier to start moving than objects with a Hardwood material.
Superball:
A material with nearly the same values as Rubberball, except it loses none of its energy in a collision. Objects that are dropped will bounce up to the same height they were dropped at.
Superice:
A material with nearly the same values as Ice, but with zero friction. Objects that start sliding won’t stop until they hit something.

Physics Materials
Here's a comparison of the physics materials:
Physics Basics
You can add physics to your world by turning certain properties for objects on or off. Here are some examples of how to make:
An invisible lightbulb
  • Visibility is off
  • Collidable is off
An invisible wall
  • Visibility is off
  • Collidable is on
A visible ghost you can walk through
  • Collidable is off
An immovable wall
  • Collidable is on
  • Simulated is off
  • Grabbable is off
A falling tree
  • Collidable is on
  • Simulated is on
  • Gravity is on
  • Grabbable is off
A grabbable ball that can fall
  • Collidable is on
  • Simulated is on
  • Grabbable is on
A ball that will quickly slide over surfaces
  • Collidable is on
  • Simulated is on
  • Physics Material set to “Ice” or “SuperIce”
A ball that won’t roll forever
  • Collidable is on
  • Simulated is on
  • Scale — one axis is scaled slightly (like 1.0, 1.0, 0.8)
A weightless asteroid
  • Collidable is on
  • Simulated is on
  • Gravity is off

General Tips
If the object is visible but collision is disabled, players will be able to walk and move freely through it. This is useful for things like fluids or grass on the ground that should be visible but don’t need to be interacted with.
Making an object both invisible and not collidable may seem pointless, but it can actually be really useful. You can use scripting to make the object reappear and become solid after a certain action occurs — a great way to make things appear from thin air.
Making walls out of hidden objects is a great way to prevent players from getting to places you don’t want them to, without changing the appearance of your world or making a script for a respawn barrier.

Was this answer helpful?

Saving, Optimizing and Publishing


How do I save or return to a draft in Horizon Worlds?
Drafts and unpublished worlds are automatically saved every ten seconds. A green circular progress ring will appear on your secondary controller when your draft is being saved.
To return to your drafts:
  1. 1.
    Turn over your wrist and select the Personal Menu icon.
  2. 2.
    Select the Create icon in the dock.
  3. 3.
    Select Drafts.
  4. 4.
    Select Edit under the draft's name.

Was this answer helpful?


How does capacity work in Horizon Worlds?
For a world to be published, it has to stay below 100% capacity in four areas:
  • Object Count: This represents the total number of shapes, gizmos and non-recorded sounds in your world.
  • Geometric Complexity: This is the number of vertices in your world. To reduce geometric complexity, try to use smaller and non-rounded shapes.
  • Dynamics (Simulation, Animation and Scripts): This is defined by the amount of interactivity and motion in your world, separated in five sub-areas:
    • Dynamics: The amount of animation, scripted motion and objects with the Grabbable property.
    • Physics: Objects that use the Simulated property.
    • Colliders: Objects with the Collidable property enabled. When objects are first created, Collidable is on by default.
    • Triggers: Trigger gizmos
    • Text: Text gizmos
  • Sound Recordings: This is the number of recorded sounds in your world.
To check capacity levels:
  1. 1.
    Open your Creator Menu.
  2. 2.
    Select Publish to go to the publish section.
  3. 3.
    Select Capacity on the left.
You can also check capacity without opening your Creator Menu by looking at the blue ring on your primary controller. The blue ring represents the area with the highest percentage.
Maintaining capacity lets you publish your world and ensures the best possible performance.

Was this answer helpful?


How do I manage collaborators of my world in Horizon Worlds?
Collaborators are people you can add to your world to build with you. Collaborators will have the same building capabilities as the original creator of the world, meaning that anyone added as a collaborator will be able to build, edit and change anything in that world.
To add a collaborator, a world must already have been created. Only the original creator of a world can add and manage collaborators.
To add a collaborator to an unpublished world:
  1. 1.
    From your Personal Menu, select the Create icon.
  2. 2.
    Select Drafts and tap the world's thumbnail photo. This will take you to the World Details page.
  3. 3.
    Select the Three Dot icon in the top right, then select Manage Collaborators.
  4. 4.
    Select Add to add someone as a collaborator.
To remove a collaborator, select Remove next to their name in your world details.

Was this answer helpful?


What happens when I add a collaborator to my world in Horizon Worlds?
If you add another Horizon Worlds player to collaborate on your world, they will be able to build, edit and change anything in that world, including things that you and other collaborators have created. Adding someone as a collaborator also allows them to use the Import World function to copy your world into another world (that you might not have access to). Once the world is imported, they can modify it as they want and even publish.
Only grant collaborator access to people you trust.
If someday you delete your Oculus or Facebook account, and do not specifically delete your worlds before deleting your account, your worlds will automatically transfer to an existing collaborator of those worlds (making the collaborator the creator). Any items within the worlds, including any voice recordings you upload using the Sound Recorder, will continue to exist in those worlds unless and until those worlds are deleted. While they will persist in the world, any voice recordings you have created will no longer be associated with you or your account. If you do not want your collaborations with other Horizon Worlds players to exist after you delete your account, you should delete those worlds or items, or remove all collaborators, prior to deleting your account.

Was this answer helpful?


What does it mean when I'm added as a collaborator to build a world in Horizon Worlds?
If you choose to collaborate on a world, you can build, edit and change anything in that world while it's unpublished. As a collaborator, you can't publish or unpublish a world, delete a world or duplicate a world. You are also not able to control who else is added as a collaborator.
You can remove yourself from a world you don't want to collaborate on at any time. The creator of the world can also remove you as a collaborator at any time, for no reason. If you ever delete your account, anything you've contributed to as a collaborator, including any voice recordings you upload using the Sound Recorder, will continue to exist in those worlds unless and until those worlds are deleted.
If the creator decides to duplicate a world you have collaborated on, the duplicated world will include anything you built or uploaded, including voice recordings you upload using the Sound Recorder, and the creator may choose not to add you as a collaborator of the duplicated world, As a collaborator, you may use the Import World function to copy any world you collaborate on into another world.

Was this answer helpful?


How do I duplicate a world in Horizon Worlds?
To duplicate a world:
  1. 1.
    From your Personal Menu, select the Create icon.
  2. 2.
    Select Drafts, then select the world's thumbnail photo.
  3. 3.
    Select the Three Dot icon, then select Duplicate.
Keep in mind, you can only duplicate a world if you're the original creator.
Learn more about collaborators and duplicating worlds.

Was this answer helpful?


How do I publish a world in Horizon Worlds?
In order to publish a world, you’ll need to add a name, description and thumbnail photo. These details help people find your world and decide if they’d like to visit it and explore.
To publish a world:
  1. 1.
    Make sure you’re in Build Mode in the world you’d like to publish.
  2. 2.
    Open your Creator Menu.
  3. 3.
    Tap the Publish icon in the dock to go to the Publish section.
  4. 4.
    Add world details, including a name, description and thumbnail.
  5. 5.
    Tap Publish.
The status will show the publish date once the world is published.
To unpublish a world:
  1. 1.
    Go to the Publish section of your Creator Menu.
  2. 2.
    Tap Publish Updates to expand the dropdown.
  3. 3.
    Tap Unpublish.
  4. 4.
    Tap [Arrow Icon] next.
Once a world is published, it will appear in the Places section of your Personal Menu and anyone in Horizon Worlds will be able to search for and go to it.
You can also continue building in a world even after it’s been published without affecting the experience of anyone who’s currently in your world.
To update a published world:
  1. 1.
    Go to the Publish section of your Creator Menu.
  2. 2.
    Tap the Next icon, then tap Publish Updates.
Anyone who’s currently in your world will need to leave and come back in order to see the updates.

Was this answer helpful?


How do I add world details in Horizon Worlds?
Tips for adding world details:
  • Use a short, compelling name for your world.
  • In the description, briefly let people know what they can do or experience in your world.
  • Take a photo that captures specific parts of your world.
To take a photo of your world:
  1. 1.
    While in your world, go to Preview Mode.
  2. 2.
    Open your Personal Menu, then select the Camera icon.
  3. 3.
    Grab the selfie stick by holding down either grip.
  4. 4.
    Select the reverse arrows to reverse the camera, then use the index trigger to take a photo.
To add a photo as a thumbnail for your world:
  1. 1.
    From your Creator Menu, select Publish.
  2. 2.
    Choose Select Photo, then select the thumbnail you want to add.
  3. 3.
    Select the Back icon to return to World Details.

Was this answer helpful?


Horizon Mature Worlds Policy Guidelines
We want Horizon to be a fun and welcoming environment for our diverse community where people feel safe and respected. That’s why we only allow content appropriate for all our users. This means that we do not allow the following, in addition to what’s not allowed under the Conduct in VR Policy and the Community Standards.
  • Content that is adult or sexual in nature; for example, nudity, depictions of people in explicit or suggestive positions, or activities that are suggestive or sexually provocative.
  • Content that depicts regulated goods or activities, including prescription medication, marijuana, alcohol, tobacco, firearms, and gambling.
  • Intense or violent content, including blood and gore.

Was this answer helpful?