ai-behavior-trees-util…
Build a production behavior-tree runtime (Blackboard, action/condition leaves, sequence/selector/parallel composites, decorators) and a Utility AI system…
Wire player input in Unity 6.3 LTS with the Input System package: Input Actions, action maps, the PlayerInput component, and reading values via callbacks or polling. Use when the project has a .inputactions asset or com.unity.inputsystem, or when the user mentions the Unity
$ npx -y skills add gamedev-skills/awesome-gamedev-agent-skills --skill unity-input-system --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/unity-input-systemContext preview
The summary Claude sees to decide when to auto-load this skill.
Wire player input in Unity 6.3 LTS with the Input System package: Input Actions, action maps, the PlayerInput component, and reading values via callbacks or polling. Use when the project has a .inputactions asset or com.unity.inputsystem, or when the user mentions the Unity
name: unity-input-system description: > Wire player input in Unity 6.3 LTS with the Input System package: Input Actions, action maps, the PlayerInput component, and reading values via callbacks or polling. Use when the project has a .inputactions asset or com.unity.inputsystem, or when the user mentions the Unity Input System, InputAction, action maps, PlayerInput, control schemes, or rebinding.
Read input through Unity's **Input System package** (`com.unity.inputsystem`, 1.x) — action-based, device-agnostic, rebindable. Targets **Unity 6.3 LTS**. This is the modern replacement for the legacy `Input.GetAxis`/`Input.GetKey` Input Manager.
action maps and control schemes, wiring a `PlayerInput` component, reading a `Vector2` stick/WASD value, or handling gamepad + keyboard + touch from one set of actions.
`*.inputactions` asset.
**When *not* to use:** rebindable-control *architecture* across engines → `input-systems` (this skill is the Unity-specific API). Moving the character once you have the input vector → `unity-physics` / `unity-csharp-scripting`.
1. **Check Active Input Handling** (Project Settings → Player). The package only receives input when this is `Input System Package (New)` or `Both`. `Both` is required if any old `Input.GetAxis` code remains. 2. **Create an `.inputactions` asset.** Add an *action map* (e.g. `Gameplay`), add *actions* (`Move` = Value/Vector2, `Jump` = Button, `Fire` = Button), and bind them to controls and composite bindings (WASD = 2D Vector composite). 3. **Choose how to read it:**
asset, pick a *Behavior* (Send Messages / Broadcast / Invoke Unity Events / Invoke C# Events). Best for single/local-coop players.
`Enable()` actions and read them. Best for systems and tools. 4. **Enable the actions/maps you read.** `PlayerInput` enables its default map automatically; actions you reference yourself must be `.Enable()`d (and disabled on teardown). 5. **Switch action maps** for context (gameplay ↔ UI/menu) instead of guarding every handler. 6. **Verify** with the Input Debugger (Window → Analysis → Input Debugger) to confirm devices and that actions fire.
using UnityEngine;
using UnityEngine.InputSystem;
// PlayerInput (Behavior = Send Messages) calls On<ActionName>(InputValue) by name.
public class PlayerInputReceiver : MonoBehaviour
{
private Vector2 _move;
private void OnMove(InputValue value) => _move = value.Get<Vector2>(); // Move action
private void OnJump(InputValue value) { if (value.isPressed) Jump(); } // Button action
private void Update() { /* drive movement from _move */ }
private void Jump() { }
}using UnityEngine;
using UnityEngine.InputSystem;
public class DirectMover : MonoBehaviour
{
[SerializeField] private InputActionReference moveAction; // assign the Move action
private void OnEnable() => moveAction.action.Enable(); // REQUIRED or it reads zero
private void OnDisable() => moveAction.action.Disable();
private void Update()
{
Vector2 move = moveAction.action.ReadValue<Vector2>(); // continuous value
transform.Translate(new Vector3(move.x, 0, move.y) * (5f * Time.deltaTime));
}
}[SerializeField] private InputActionAsset actions;
private void OnEnable()
{
actions.FindAction("Gameplay/Fire").performed += OnFire; // edge event: fires once
actions.FindActionMap("Gameplay").Enable();
}
private void OnDisable() => actions.FindAction("Gameplay/Fire").performed -= OnFire;
private void OnFire(InputAction.CallbackContext ctx) => Shoot(); // ctx.ReadValue<T>() if needed
private void OpenPauseMenu() // change context, don't sprinkle if-checks
{
actions.FindActionMap("Gameplay").Disable();
actions.FindActionMap("UI").Enable();
}
private void Shoot() { }forgot to `Enable()` the action/map. `PlayerInput` auto-enables; raw `InputAction`s do not.
`Input.GetAxis`/`Input.GetKey` while Active Input Handling is `New`. Port it or set `Both`.
`performed` callback (or `WasPressedThisFrame()`), not per-frame `ReadValue` for triggers.
GameObject as the `PlayerInput`; `Broadcast Messages` reaches children too.
without unsubscribing doubles up handlers.
in the Input Debugger; the Vector2 composite needs all four bindings set.
bindings as JSON, and **local multiplayer** with `PlayerInputManager`, read `references/rebinding.md`.
(`https://docs.unity3d.com/Manual/com.unity.inputsystem.html`).
<img src="docs/assets/banner.png" width="820" alt="awesome-gamedev-agent-skills — game-dev skills for AI coding agents.
Repo: gamedev-skills/awesome-gamedev-agent-skills
Build a production behavior-tree runtime (Blackboard, action/condition leaves, sequence/selector/parallel composites, decorators) and a Utility AI system…
Implement game audio practice — bus/mixer architecture and gain in decibels, ducking (sidechain), adaptive/dynamic music via layering and re-sequencing, SFX…
Build game cameras that feel good — 2D follow with a deadzone, look-ahead, smoothing, and level-bounds clamping; 3D third-person orbit with collision and…
Plan, generate, source, normalize, and validate cohesive visual game assets. Use for art direction, style bibles, sprites, tilesets, backgrounds, UI art,…
Build branching dialogue and narrative — a node/choice graph with conditions, variables, and localization hooks — and choose between authoring tools Ink and…
Design NPC and enemy decision-making with finite state machines, behavior trees, steering behaviors, and A* pathfinding — engine-neutral algorithms that pair…