Third Person Perspective
The Third Person Perspective Item owns the world-visible model for a Character Item. It attaches that model to the correct character Item Slot, supplies third-person references to item actions, positions a two-handed grip with IK, and can move an unequipped item to a holster instead of hiding it.

Understand the third-person hierarchy
The inventory-facing Character Item and its rendered model live in different places:
| Object or component | Responsibility |
|---|---|
| Item Placement | Holds the main Character Item GameObjects on a scene character. |
| Character Item | Owns the Item Definition, Slot ID, equip timing, perspective components, and item actions. It stays below Item Placement. |
| Character Item Slot | Marks the hand or other attachment point below the active character model. Its ID must match the Character Item’s Slot ID. |
| Third Person Perspective Item | Lives on the main Character Item and resolves the active model, Item Slot, visible object, optional spawn parent, IK targets, and holster. |
| Object | The firearm, Iron Sword, shield, or other model shown in the world. A scene-built item places it below the selected Item Slot; a runtime Character Item prefab stores it below the Character Item until initialization reparents it. |
| Third Person Object | Marks the visible object’s root so Perspective Monitor can replace its materials in the local first-person view while keeping the world model available for third-person cameras, AI, and remote players. |
| Character Item Actions | Stay on the main Character Item. Their perspective properties point to third-person fire points, hitboxes, effects, and other children of the world model. |
The released Version 3 component does not use the old Use Parent Humanoid Bone or Parent Humanoid Bone fields. Choose the humanoid Hand or generic Item Parent in Item Manager; at runtime, the Character Item Slot ID and optional Spawn Parent identifier decide where the object attaches.
For a both-perspective character, the First Person Perspective Item owns a separate local arms/item representation. Both perspective components belong to the same Character Item, use the same slot ID, and share one set of actions.
Build the perspective with Item Manager
- Prepare the character with a Character Item Slot below the intended hand or attachment bone. Give it the Slot ID that the item will use.
- Open Tools > Opsive > Ultimate Character Controller > Item Manager and select or create the Character Item.
- Under Third Person (including AI and Multiplayer), enable Add Third Person Item. This toggle is enabled by default.
- Assign Third Person Visible Item to the model that should be seen in the world. Select a model or model prefab, not an already-built Character Item.
- For a Humanoid character, choose Hand; Right is the starting value. For a Generic character, assign Item Parent to a GameObject with the matching Character Item Slot.
- Assign Animator Controller only when the visible item has its own animation, such as a firearm bolt or magazine. The character Animator still owns the character pose.
- Add the item action on the main Character Item. Use Shootable for a firearm or Melee for an Iron Sword.
- When both perspectives are enabled, confirm that the first- and third-person Item Slots have the same ID.
- Select Build Item, then inspect the generated hierarchy and Third Person Perspective Item component.
The builder clones the visible model, places its hierarchy on UCC’s SubCharacter layer, and adds Third Person Object to its root when third-person, AI, or multiplayer visibility requires it. If the object has no Audio Source, the builder adds one with Play On Awake disabled, Spatial Blend 1, and Max Distance 20. When an Animator Controller is supplied, it adds or reuses an Animator, disables root motion, sets Culling Mode to Always Animate, and adds a Child Animator Monitor.
For a scene character, the builder places the visible object below the chosen Item Slot while the Character Item remains below Item Placement. For a reusable Character Item prefab, the visible object initially remains a child of the Character Item and is moved below the active model’s matching slot when the inventory initializes it.
Released Version 3’s Update Item path does not apply changes to Add Third Person Item, Third Person Visible Item, Hand/Item Parent, Animator Controller, or Slot ID. It updates only the item name, Item Definition, Animator Item ID, and action list or template. Make perspective changes directly on the existing component and hierarchy, or deliberately rebuild a replacement after preserving custom action and State settings.
Configure the Render foldout
| Field | Released Version 3 starting value and purpose |
|---|---|
| Spawn Parent | ID -1 and no object. Leave it unset to attach directly below the matching Item Slot. Assign an identified child below that slot when the model needs a more specific attachment transform. |
| Object | Empty on a newly added component. Assign the third-person model; leaving it empty is appropriate only for an intentionally invisible item whose actions do not need object-relative references. |
| Local Spawn Position | (0, 0, 0) for an object reparented from a runtime Character Item prefab. |
| Local Spawn Rotation | (0, 0, 0) for a runtime-reparented object. |
| Local Spawn Scale | (1, 1, 1) for a runtime-reparented object. |
| Holster Target | ID -1 and no object. Assign an identified empty Transform below the active character model when an owned, unequipped item should remain visible. |
The Local Spawn fields are applied when the visible object begins below the Character Item and is reparented at runtime. A scene-built object that is already below a character Item Slot keeps its authored local Transform; reposition that scene object directly.
Both Spawn Parent and Holster Target use an ID/Object control, but their released Version 3 runtime lookups force a fresh search by ID. A direct Transform with ID -1 is ignored. For either feature:
- Create an empty GameObject below the Item Slot or active character model.
- Add Object Identifier and give it a positive, unique ID.
- Enter that same ID in Spawn Parent or Holster Target.
- Repeat the same semantic target and ID on every model the character can switch to.
See Object Identifier for the identifier component. Use positive IDs for model-resolved item-action references as well: released Version 3 resets cached third-person perspective properties on a model switch only when their ID is greater than 0.
Configure a firearm or Iron Sword
| Goal | Third-person model setup | Action references |
|---|---|---|
| Two-handed firearm | Attach the firearm to the dominant-hand slot. Add a support-hand target at the foregrip and an optional elbow hint. Add identified children for the muzzle, fire point, shell, tracer, or other perspective-specific locations. | In the Shootable Action, assign each Third Person fire, muzzle, shell, tracer, projectile, reload, or scope property to the corresponding model child. Use positive IDs when the character can switch models. |
| One-handed Iron Sword | Attach the sword to the dominant-hand slot. Leave the non-dominant IK fields empty unless the animation deliberately uses a two-handed grip. Add a positive-ID holster target at the hip or back if the sword should remain visible when unequipped. | In the Melee Action, assign the third-person hitbox, trail, recoil, and effect references to the sword model. Let the action module control hit detection rather than leaving a presentation collider active continuously. |
Keep first-person and third-person references separate. A correct first-person muzzle or hitbox does not supply the third-person value automatically, and the third-person world model should not use the first-person Overlay layer.
Position the non-dominant hand
Humanoid animation retargeting can put a support hand slightly away from an item’s authored grip. Non Dominant Hand IK Target lets Character IK place the free hand on the visible object; Non Dominant Hand IK Target Hint optionally guides the elbow. If the item is attached to the right hand, the target controls the left hand, and vice versa.

- Create an empty child on the visible item at the intended support-hand grip.
- Rotate the child so its orientation matches the hand pose.
- Assign it to Non Dominant Hand IK Target.
- Optionally create an elbow guide and assign Non Dominant Hand IK Target Hint.
- Confirm that the active Humanoid model has Character IK and that the relevant Animator layer has IK Pass enabled.
- Equip, aim, use, reload, and unequip. Use a State preset to reduce the relevant hand and elbow weights while an animation, such as reload, must release the grip.

The target should move with the item, so make it a child of the model rather than a scene-only helper elsewhere on the character.

The built-in Character IK route is for a Humanoid Animator. A Generic model needs matching authored animation or a project-specific IK solver. See Inverse Kinematics for character setup, layer indices, weights, and debugging.
Holster an unequipped item
Without a Holster Target, the third-person Object deactivates when the item is unequipped. With a resolved target, an owned item that remains part of a valid Item Set is reparented to that target, reset to local position and rotation zero, and kept active. The perspective reports it as unequipped because its parent is now the holster.

Create a dedicated empty target at the back, hip, or other storage point. Do not use the hand, spine, or another functional rig bone itself: Third Person Perspective Item enables and disables the target GameObject during pickup, death, and respawn.

Add Object Identifier to that empty target and use its positive ID in Holster Target. The released Version 3 runtime does not honor the old direct-reference-only setup when the ID remains -1. For a Model Switch character, create an equivalent target with the same ID on every model.
Holstering is presentation, not inventory storage. If the item is removed from the Inventory or no longer belongs to a valid Item Set, the object is deactivated instead. Pickup and drop prefabs are separate from the held model; configure them through Item Creation and Item Pickup.
Configure layers, renderers, and colliders
The Item Manager places the world model recursively on SubCharacter. Keep it off the character’s own layer; the Perspective Item warns when the Object root uses the same layer as the character because that commonly causes collision problems. A manually created model should apply its intended non-colliding item layer to every child, not only the root.
Third Person Object belongs on the Object root. Perspective Monitor caches its child renderers and swaps them to the character’s invisible material in the local first-person view, allowing the model to keep casting shadows. Force Visible and First Person Visible On Death are disabled by default. A runtime-added object’s renderers are registered when Inventory adds the Character Item, so a missing or misplaced Third Person Object can leave the world model visible to the local first-person camera.
The third-person GameObject can remain active while its materials are hidden in first person. Keep presentation colliders non-interacting on the SubCharacter layer, and let the Shootable, Melee, Shield, or other action module explicitly control gameplay collision. Use separate pickup and drop objects when world physics are required.
Remote network characters are always treated as third person. Even a first-person-only local game needs this perspective when AI or other clients must see equipped items. The First Person Perspective Item handles the local Overlay model and procedural motion; do not move the third-person Object to Overlay to fix local visibility.
How it runs
- Inventory initializes the Character Item’s perspective components before its actions. A runtime prefab finds the active model’s non-first-person Item Slot by Slot ID, resolves an optional Spawn Parent ID below it, reparents the Object, and applies the Local Spawn transform.
- The perspective caches the Object’s equipped parent and local pose, the parent hand, active model’s Character IK, and optional holster target. Item actions initialize their own first- and third-person references.
- Pickup makes the empty holster-target GameObject available and marks the perspective as owned. It does not equip the model by itself.
- Equip moves a holstered object back to its cached hand parent and pose, makes the Object active, and supplies the non-dominant targets to Character IK on the next update.
- While equipped, Character Item Actions use their third-person perspective values. A Child Animator Monitor forwards character and item parameters to an Animator on the visible object.
- In a local first-person view, Perspective Monitor replaces Third Person Object materials while the Character Item selects its first-person counterpart as the active perspective. Returning to third person restores the world model’s materials.
- Unequip clears the item IK targets. If a valid holster and owned Item Set remain, the Object moves to the holster; otherwise it deactivates.
- Death temporarily disables an owned holster target, respawn enables it again, and removal deactivates the Object. A character model switch resolves the new model’s slot and positive-ID targets, reparents the Object, and refreshes Animator monitors and IK.
Editor checkpoint
Before entering Play Mode, confirm:
- the Character Item is below Item Placement or saved as the intended runtime prefab;
- Object is the world-visible model and does not itself contain another Character Item;
- the Character Item Slot ID matches the third-person Item Slot and, when present, the first-person Item Slot;
- the visible root and all children use the intended SubCharacter/non-colliding layer;
- Third Person Object is on the Object root and Perspective Monitor has a valid invisible material;
- any runtime Spawn Parent, Holster Target, or model-resolved action property uses a positive, unique Object Identifier ID present on every model;
- the optional item Animator has the intended controller and Child Animator Monitor;
- two-handed Humanoid items have a child grip target, optional elbow hint, Character IK, and IK Pass;
- firearm or Iron Sword actions have their own third-person transforms, hitboxes, and effects assigned; and
- pickup, held, holstered, and dropped objects are configured as separate roles when their physics differ.
Verify in Play Mode
- Add the item to Inventory without equipping it. Confirm no hand-held model appears unexpectedly; if it is part of a valid Item Set and has a holster, confirm the intended holstered result.
- Equip the firearm or Iron Sword. Confirm the Object moves to the correct hand, uses the authored local pose, and drives the intended item Animator.
- Aim, use, reload, block, or swing. Confirm every third-person muzzle, projectile, hitbox, trail, audio, and effect starts from the world model rather than a first-person reference.
- For a two-handed firearm, aim across the character’s full pitch range. Confirm the support hand reaches the grip and the elbow bends toward its hint. During reload, confirm the selected State releases and restores the appropriate IK weights.
- Unequip and re-equip. Confirm the item moves to its identified holster only while the Inventory and Item Set still support it, then returns to the hand without changing scale.
- Switch between first and third person. Confirm the local first-person camera does not render the third-person materials, while shadows and the first-person counterpart behave as intended.
- Walk the character into walls and other colliders while equipped and holstered. Confirm the presentation model does not push the character or generate unintended impacts.
- Switch every supported character model. Confirm each model has the matching Item Slot, Spawn Parent, Holster Target, and positive action-property IDs.
- In multiplayer, compare owner, spectator, server, and remote clients. The remote player should show the third-person item and equivalent equip/use/holster results.
Troubleshooting
| Symptom | Check | Fix |
|---|---|---|
| Build Item is disabled | Perspective toggle, visible item validity, Item Parent, and first-/third-person slot IDs | Enable at least one perspective, select a model rather than a Character Item, choose a valid Item Slot parent, and make both perspective slots use the same ID. |
| Update Item does not change the third-person model, hand, controller, or slot | Released Version 3 Item Manager update path | Edit the existing Third Person Perspective Item and hierarchy directly, or preserve custom actions/States and deliberately rebuild a replacement. |
| A runtime item appears at the root or wrong hand | Character Item Slot ID, active model’s Item Slot, and Spawn Parent ID | Add the matching non-first-person Item Slot. Leave Spawn Parent unset to use it directly, or add a positive-ID child below that slot. |
| Changing Local Spawn fields does not move a scene-built item | Current Object hierarchy | Those fields apply to an object reparented from a Character Item prefab. Move the scene object’s Transform directly when it already lives below the character slot. |
| A directly assigned Spawn Parent or Holster Target is ignored | ID value and Object Identifier | Released Version 3 force-searches by ID. Add Object Identifier, use a positive unique ID, and enter the same ID in the perspective field; do not leave it at -1. |
| The item disappears instead of holstering | Holster ID, inventory amount, valid Item Set, and active model | Add the identified empty target to the active model and keep the Character Item owned and valid for an Item Set. Repeat the ID on every switchable model. |
| Holstering disables part of the character rig | Holster target object | Use a dedicated empty child. Do not assign a functional hand, spine, renderer, or other rig GameObject because the perspective toggles the target object. |
| The world model is visible in local first person | Third Person Object location, Perspective Monitor, and invisible material | Put Third Person Object on the visible root, update the character so its renderers are registered, and assign the monitor’s invisible material. |
| The item pushes the character or hits world objects while merely equipped | Layers, Rigidbody, and colliders on the visible hierarchy | Restore the recursive SubCharacter/non-colliding setup, remove an unnecessary Rigidbody, and let action modules enable only deliberate hitboxes. |
| The support hand misses the firearm | Humanoid Avatar, Character IK, IK Pass, target, hint, and attachment hand | Repair the Humanoid setup, assign a child grip target and optional hint, and verify the item is parented below the intended hand’s slot. |
| The hand remains locked during reload | Reload State and per-hand/per-elbow IK weights | Use a State preset to reduce the relevant weights during the release interval, then restore them after the animation. |
| A shot or melee effect comes from the wrong place | Action’s Third Person perspective property and identifier | Assign the correct child transform. For model switching, use a positive ID present on every model instead of ID 0 or a cached direct reference. |
| Switching character models produces a null parent or stale reference | Item Slot and positive identifiers on the new model | Give every model an equivalent slot and unique matching Spawn Parent, Holster Target, and action-property IDs before allowing the switch. |
| A remote player has no visible held item | Third Person Perspective Item, replicated inventory/equip state, and model identifiers | Configure this perspective even for a local first-person design, then verify the multiplayer integration synchronizes ownership and active Item Sets. |
Saving and multiplayer boundaries
The authored Object, local spawn transform, positive IDs, IK targets, holster, Animator, and States live on the Character Item scene object or prefab. Equipped state, current model, active camera perspective, holster parenting, and material swap are runtime presentation state. Save Inventory ownership and Item Sets, restore the active character model, and let UCC rebuild perspective placement rather than serializing the current hand or holster parent.
Non-local, non-spectator network characters use third person and discard first-person perspective references during Character Item initialization. Perspective Monitor also keeps remote characters in third-person materials. Inventory ownership, equipped Item Sets, and gameplay actions still need the installed multiplayer integration; custom action effects, arbitrary UnityEvents, or project-specific holster logic are not synchronized merely because the visible model exists.
Related tasks
- Character Item covers Item Definition, slots, equip timing, actions, drop behavior, and perspective ownership.
- Item Creation builds scene and runtime Character Items through Item Manager.
- Common Item Setups provides practical firearm and melee creation routes.
- Item Slots defines the matching attachment IDs used by both perspectives.
- First Person Perspective configures the local arms/item counterpart and Overlay rendering.
- Item Actions configures what the equipped firearm, Iron Sword, shield, or other item does.
- Inverse Kinematics prepares Humanoid Character IK and per-limb weights.
- State Presets changes IK weights or other fields during reload, aim, and additional modes.
- Model Switch explains equivalent slots and identifiers across character models.
- Layer Manager restores UCC’s expected Character, SubCharacter, Overlay, and collision layers.
Developer reference
ThirdPersonPerspectiveItem extends PerspectiveItem. Object, LocalSpawnPosition, LocalSpawnRotation, and LocalSpawnScale come from the base class. The third-person component exposes NonDominantHandIKTarget, NonDominantHandIKTargetHint, HolsterTarget, and HolsterTargetIDObject; FirstPersonItem is always false.
Retrieve it through CharacterItem.ThirdPersonPerspectiveItem. CharacterItem.ActivePerspectiveItem and GetVisibleObject() select the representation currently used by item actions. Leave Initialize, Pickup, StartEquip, SetActive, Unequip, Remove, and OnCharacterSwitchModels to the Inventory and item-ability lifecycle.
The perspective listens for OnDeath, OnRespawn, and OnCharacterSwitchModels. Character Item coordinates it through OnInventoryAddItem and OnCharacterChangePerspectives; Perspective Monitor listens to camera perspective and inventory events to register and swap third-person renderers.