agentsclimarketplace

Migrate unity input system for mirror player controller

Skill ECNU-ICALK/AutoSkill/SkillBank/ConvSkill/english_gpt4_8_GLM4.7/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.From its SKILL.md

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

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.

SKILL.md

4.5 KB, 921 tokens by cl100k_base, as published. Nobody here has run it

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

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.