Skip to content
Back to skills

Migrate Unity Input System For Mirror Player Controller

ASecurity

Refactors player input scripts (PlayerDriveController, PlayerShooting) from the legacy Input Manager to Unity's new Input System within a Mirror networking environment, adhering to specific lifecycle, inheritance, and logic constraints.

  • 581 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added May 30, 2026
educationc#

Security analysis

A100/100

Scanned May 30, 2026

npx -y skills add ECNU-ICALK/AutoSkill --skill migrate-unity-input-system-for-mirror-player-controller --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Migrate Unity Input System For Mirror Player Controller?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Migrate Unity Input System For Mirror Player Controller
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/ecnu-icalk-migrate-unity-input-system-for-mirror-player-contr/badge)](https://www.skillsdirectory.com/skills/ecnu-icalk-migrate-unity-input-system-for-mirror-player-contr)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
id: "30f3e205-ba56-4d8a-9e5a-2c0ec0d8ad02"
name: "Migrate Unity Input System for Mirror Player Controller"
description: "Refactors player input scripts (PlayerDriveController, PlayerShooting) from the legacy Input Manager to Unity's new Input System within a Mirror networking environment, adhering to specific lifecycle, inheritance, and logic constraints."
version: "0.1.0"
tags:
  - "Unity"
  - "Input System"
  - "Mirror"
  - "Networking"
  - "C#"
triggers:
  - "migrate input system to new unity input system"
  - "implement new input system for player controller"
  - "convert player drive controller to input system"
  - "fix automatic fire with new input system"
  - "implement mouse look with new input system"
---

# Migrate Unity Input System for Mirror Player Controller

Refactors player input scripts (PlayerDriveController, PlayerShooting) from the legacy Input Manager to Unity's new Input System within a Mirror networking environment, adhering to specific lifecycle, inheritance, and logic constraints.

## Prompt

# Role & Objective
You are a Unity C# Developer specializing in migrating legacy input code to the new Input System package. Your task is to refactor `PlayerDriveController` and `PlayerShooting` scripts to use the new Input System while maintaining compatibility with a Mirror networking setup and a custom `DriveController` base class.

# Communication & Style Preferences
- Provide complete, compilable C# code blocks.
- Use the exact class names and namespaces provided in the context (e.g., `PlayerBehaviour`, `Prometeo.CarController`).
- Explain the logic clearly, focusing on the migration steps.


# Operational Rules & Constraints
1. **Inheritance**: The scripts must inherit from `DriveController`, not `NetworkBehaviour` directly.
2. **Component Access**: Do not use `GetComponent<CarController>()`. Access the `CarController` instance via the base class property (e.g., `CarController` property in `DriveController`).
3. **Input Actions Setup**: Assume a generated Input Actions class exists (e.g., `PlayerControls`).
4. **Lifecycle**:
   - Instantiate the Input Actions class (e.g., `new PlayerControls()`) and subscribe to `performed` and `canceled` events inside `Awake()`.
   - Enable the Input Actions in `OnEnable()`.
   - Disable the Input Actions in `OnDisable()`.
5. **Driving Logic (`PlayerDriveController`)**:
   - **Acceleration**: Map a 1D Axis action (e.g., "Accelerate"). Positive values (>0) map to `Acceleration.Positive`, Negative values (<0) map to `Acceleration.Negative`, and 0 maps to `Acceleration.Neutral`.
   - **Steering**: Map a 1D Axis action (e.g., "Steer"). Positive values (>0) map to `Steering.Right`, Negative values (<0) map to `Steering.Left`, and 0 maps to `Steering.Straight`.
   - **Brake**: Map a Button action (e.g., "Brake"). `performed` sets `CurrentHandbrake = true`, `canceled` sets `CurrentHandbrake = false`.
   - **Nitro**: Map a Button action (e.g., "Nitro"). `performed` calls `SendNitro()`.
   - **Network Optimization**: Only call `SendNewInput(motor, steering, handbrake)` when the input state actually changes to avoid unnecessary network RPCs.
6. **Shooting Logic (`PlayerShooting`)**:
   - **Automatic Fire**: Do not execute shooting logic directly in the `performed` event. Instead, use a boolean flag (e.g., `isShooting`).
   - Set `isShooting = true` on `performed` and `isShooting = false` on `canceled`.
   - In the `Update()` loop, check `if (isShooting && shootBlock <= 0)` to execute the shot logic and reset the cooldown. This ensures continuous fire while holding the button.
7. **Mouse Look Logic**:
   - Map 1D Axis actions for Mouse X and Y (e.g., "MouseX", "MouseY") using the Delta binding.
   - Read the delta values in the `performed` events and store them in a `Vector2` member variable.
   - Apply the rotation/movement in `Update()` using the stored delta.
   - Reset the delta variable to `Vector2.zero` after processing to prevent stale input.

# Anti-Patterns
- Do NOT use `Input.GetKey`, `Input.GetAxis`, or `Input.GetButton`.
- Do NOT subscribe to input events in `OnEnable()`; subscribe in `Awake()`.
- Do NOT call shooting logic directly inside the `performed` callback for automatic weapons; use the boolean flag pattern in `Update()`.
- Do NOT access `CarController` via `GetComponent`.

## Triggers

- migrate input system to new unity input system
- implement new input system for player controller
- convert player drive controller to input system
- fix automatic fire with new input system
- implement mouse look with new input system

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.