User Tools

Site Tools


attach_points

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
attach_points [2020/09/26 13:22] justinattach_points [2022/05/09 15:06] (current) justin
Line 5: Line 5:
  
 =====Creating Attach Points===== =====Creating Attach Points=====
 +Attach points for models can be created with the "Create Attach Point" tool in the [[Voxel Editor]]. This tool can be selected using the shortcut key of "F8" or by clicking on the tool button with the "link" icon on the Model Tools panel. While active, left-clicking a voxel will place an attach point at that coordinate. The attach point's location can be adjusted later using the offset sliders (see next section).
  
-"Create Attach Point" mode (F8 shortcut key), left-click voxel to place at that coordinate +After left-clicking a voxel, the editor will prompt for an attach point ID. Each attach point within a model frame must have an ID that is unique to that frame. Once added, a white cube with a "linkicon will be displayed at the new attach point's location.
- +
-Attach point ID is unique per model frame +
- +
-White cube with link icon will display at attach point positions+
  
 <WRAP center round info 100%> <WRAP center round info 100%>
Line 21: Line 18:
  
 =====Offset, Rotation, and Scale===== =====Offset, Rotation, and Scale=====
- 
 There are several properties that can be adjusted for attach points from the [[Model Properties]] panel: //offset//, //rotation//, and //scale//. These properties affect an [[object|object's]] appearance when attached to that particular attach point. The settings for these properties can be assigned per frame, allowing attached [[object|objects]] to be animated along with the parent model. There are several properties that can be adjusted for attach points from the [[Model Properties]] panel: //offset//, //rotation//, and //scale//. These properties affect an [[object|object's]] appearance when attached to that particular attach point. The settings for these properties can be assigned per frame, allowing attached [[object|objects]] to be animated along with the parent model.
  
 ^Property^Description^ ^Property^Description^
-|Offset|The offset values define the position of the attach point within the frame and is relative to the model grid's center (at ground level). The attach points for the parent and child models will be connected together at their respective attach point locations.|+|Offset|The offset values define the position of the attach point within the frame and is relative to the model grid's center (at ground level). When an [[object]] model (the "child") is attached to an [[entity]] (the "parent"), the attach points for the parent and child models will be connected together at their respective attach point locations.|
 |Rotation|The rotation values determine the angle of an attached [[object]]. This can be used, for example, to angle a sword downward along with the swinging of a character's arm during an attack [[animation]].| |Rotation|The rotation values determine the angle of an attached [[object]]. This can be used, for example, to angle a sword downward along with the swinging of a character's arm during an attack [[animation]].|
 |Scale Factor|The scale factor value determines the size of an [[object]] when attached to an attach point. A scale factor of 1 will keep the model's original size, whereas a value of 2 will double the model's size. The default scale factor of 1.05 will enlarge models slightly to help prevent [[https://en.wikipedia.org/wiki/Z-fighting|z-fighting]].| |Scale Factor|The scale factor value determines the size of an [[object]] when attached to an attach point. A scale factor of 1 will keep the model's original size, whereas a value of 2 will double the model's size. The default scale factor of 1.05 will enlarge models slightly to help prevent [[https://en.wikipedia.org/wiki/Z-fighting|z-fighting]].|
  
 =====Scripting with Attach Points===== =====Scripting with Attach Points=====
 +Once you've set up any necessary attach points for your [[object|objects]] and the models to which they will be attached, you can use the [[Attach Object]] scripting function to trigger an [[object]] to be attached to a target [[entity]] in-game, for example to attach a torch to a wall tile when the player interacts with it.
  
 +The example below will attach the "sword" [[object]] model's "handle" attach point to the player's "right_hand" attach point.
 <code bauxite> <code bauxite>
-attach_object("sword", player, "handle", "right_hand")+attach_object("sword", player, "handle", "right_hand");
 </code> </code>
  
 +Alternately, you can create attach points for the sword [[object]] and player [[character]] using the same ID (e.g. "hand") and leave out the function's fourth parameter.
 <code bauxite> <code bauxite>
-attach_object("sword", player, "hand")+attach_object("sword", player, "hand");
 </code> </code>
  
 +To detach a previously attached [[object]], you can use the [[Detach Object]] scripting function, for example to remove a book from a table when the player interacts with the table.
 +
 +The example below will detach the [[object]] currently attached to the player's "right_hand" attach point.
 <code bauxite> <code bauxite>
-detach_object(player, "right_hand")+detach_object(player, "right_hand")
 +</code> 
 + 
 +You can reference the [[object]] that's currently attached to an attach point using the "attachment" property with the desired attach point ID. In the example below, the "glow" [[animation]] will be played for the [[object]] attached to the player's "right_hand" attach point. 
 +<code bauxite> 
 +play_animation(player.attachment["right_hand"], "glow");
 </code> </code>
  
 =====Equipment===== =====Equipment=====
 +Although most of the equipment system is yet to be implemented, there is some experimental functionality that can be used to automatically attach models to a character whenever an item is equipped. The steps below can be followed to create an equippable item with a corresponding [[object]] model.
  
-Automatic attaching based on attach point ID when an item is equipped and an object model is assigned to that item)+1) Toggle the "Equippable" setting to "On" for the [[item]] in the [[Item Editor]]. 
 + 
 +2) Assign an [[object]] model to the [[item]] in the [[Item Editor]]. 
 + 
 +3) Create an attach point for both the [[character]] and [[object]] that matches the equipment slot ID (e.g. "right_hand"). 
 + 
 +4) Call the [[Equip Item]] scripting function to equip the [[item]] to the appropriate slot (e.g. "right_hand"and the [[object]] will automatically be attached to the corresponding attach point. 
 + 
 +<code bauxite> 
 +equip_item(player, "right_hand", "ITEM_0001"); 
 +</code> 
 + 
 +With this setup, calling the [[Unequip Item]] scripting function will automatically detach the [[object]] model associated with the [[item]] that is unequipped. 
 + 
 +<code bauxite> 
 +unequip_item(player, "right_hand")
 +</code>
  
 ~~NOTOC~~ ~~NOTOC~~
attach_points.1601151760.txt.gz · Last modified: 2020/09/26 13:22 by justin