Forum Discussion
4. Manipulation Tools: Move, Rotate, Scale
The manipulation tools are your primary means of positioning and adjusting objects (including Gizmos) within your world. Mastering these tools is essential.
- Selection: Click on an object in the Viewport to select it. A selected object will usually have a highlight or outline.
- Tool Switching:
- Move Tool (W): Allows you to move objects along the X, Y, and Z axes. You'll see red, green, and blue arrows representing these axes. Click and drag an arrow to move the object along that axis.
- Rotate Tool (E): Allows you to rotate objects around the X, Y, and Z axes. You'll see colored rings representing these axes. Click and drag a ring to rotate the object around that axis.
- Scale Tool (R): Allows you to change the size of objects along the X, Y, and Z axes. You'll see colored boxes representing these axes. Click and drag a box to scale the object along that axis. You can also scale uniformly (all axes at once) by clicking and dragging the center.
- Axis Manipulation: Pay close attention to the colored axes of the manipulator. These indicate the direction of movement, rotation, or scaling.
- Local vs. Global Space: There's a toggle in the toolbar to switch between Local and Global space.
- Local Space (default): The axes are aligned with the object's orientation. If you rotate an object, its local axes will rotate with it. This is crucial for precise adjustments.
- Global Space: The axes are aligned with the overall world coordinate system (fixed).
- Precision: For precise movements, use the numeric input fields in the Property panel or enable and set grid snapping, angle snapping, and scale snapping if necessary.
- Snap to Surface: Enabling this will allow you to grab the center of an object and snap it to the surface of another object.
5. Hierarchy and Parenting
As your worlds become more complex, maintaining a clear and logical organization is essential for efficient building and scripting. Horizon Worlds uses a hierarchical system, meaning objects can be "parented" to each other, creating relationships that affect how they behave.
- Parenting: This is the core concept. You create a parent-child relationship between objects.
- How to Parent: Drag one object onto another object. The object you dragged onto becomes the parent; the object you dragged becomes the child. You'll see the child object indented or nested under the parent in the Hierarchy panel, indicating the relationship.
- Inheritance: The child object inherits the transformations (position, rotation, scale) of its parent. If you move, rotate, or scale the parent, the child will move, rotate, or scale along with it, maintaining its relative position, rotation, and scale to the parent.
- Interactivity: Child objects will remain interactive (i.e., grabbable) as long as the parent object remains Static with Motion set to None.
- Pivoting: The center of the parent object becomes the pivot point of the group.
- Empty Objects: The best practice is to use Empty Object Gizmos as "folders" or containers to organize your scene. They are also useful for reference objects and script holders.
- How to Use:
- Add an Empty Object Gizmo to your scene (from the Build Menu).
- Rename it to something descriptive (e.g., "House," "FurnitureSet," "EnemyGroup").
- Parent other objects to this Empty Object Gizmo by dragging them onto it in the Hierarchy panel.
- Alternatively, select multiple objects in the viewport and use CTRL + G or Right-Click and select Create Parent Object. This will create a new object called Empty Object. All selected objects will become children of the empty object.
- Benefits of a Good Hierarchy:
- Organization: Keeps your scene manageable, even with hundreds of objects.
- Simplified Selection: Selecting the parent allows you to easily select all its children.
- Logical Transformations: Move, rotate, or scale the parent, and all its children will be affected accordingly. This is crucial for complex structures.
- Naming Conventions (Crucially Important!): Give every object and Empty Object Gizmo a clear, descriptive name. Avoid generic names like "Cube," "Cube.001," etc. Use names like "WallSectionLeft," "DoorFrame," "EnemyPatrolPoint." This is absolutely essential for finding and managing objects as your worlds grow, especially when it comes to attaching objects to your scripts.
- Example: Imagine building a house. You could create an Empty Object Gizmo named "House." Then, you would parent all the individual parts of the house (walls, roof, door, windows) to the "House" Empty Object. Now, you can move the entire house simply by moving the "House" object. You could even create nested Empty Objects, like "House" -> "FirstFloor" -> "LivingRoom" -> "Furniture" to further organize the scene.
By consistently using parenting and Empty Object Gizmos to structure your worlds, you'll create a much more manageable and efficient workflow.
6. Beginner Tips
- Use Undo (Ctrl + Z): Don't be afraid to experiment. Undo is your safety net.
- Read the Documentation: The Meta Horizon Learn Center is your best friend. Refer to it frequently.
- Start Small: Don't try to build a massive, complex world right away. Begin with small, manageable projects to learn the tools and workflows.
- Test Frequently: Use Preview Mode (Play button) to test your world regularly as you build.
- Keyboard Shortcuts: Learn the keyboard shortcuts! They will significantly speed up your workflow.
- Practice Good Organization: Use Empty Objects to organize different parts of your world (e.g., terrain, buildings, props).
- Backups: Use the built-in backup feature of your world to create a save point that you can roll back to if needed.
- Community: Participate in the Horizon Worlds creator forums and Discord servers. Ask questions, share your work, and learn from others.
This is just the beginning of your Horizon Worlds journey! Explore, experiment, and ask questions.
This post is related to Office Hours - Best Practices: Getting Started on Thursday, 3/13, at 5:00 PM PT. Register here and join me for a more in-depth discussion!