Troubleshooting
This document is a field guide for diagnosing and fixing problems with Realistic Helicopter Controller Pro (RHCP). It is organized by area — installation and setup, input, flight behavior, rendering, and the editor tooling — and every issue follows the same Symptoms / Causes / Solutions template. Wherever possible each entry is grounded in a concrete diagnostic: a Project Doctor check (RHCP-DOC-xx) or a Validator rule (RHCP-VAL-xxx), so you can confirm the diagnosis in the editor rather than guessing.
Two tools resolve the large majority of problems described here, so reach for them first:
- Project Doctor —
Tools ▸ BoneCracker Games ▸ RHCP ▸ Project Doctor…— checks the project environment (input handler, packages, render pipeline, color space, Unity version, TextMeshPro). See Editor Tools. - Validator —
Tools ▸ BoneCracker Games ▸ RHCP ▸ Validator…— checks an individual helicopter and scene against 26 rules and offers one-click fixes for most of them.
How to Use This Guide
Start with the diagnostic that matches the symptom. A problem that affects every RHCP helicopter and shows up before you even press Play is almost always an environment problem — run the Project Doctor first. A problem with one specific helicopter (it tumbles, it has no controls, it is silent) is almost always a wiring problem on that prefab or scene object — run the Validator with that helicopter selected.

The Validator grades each finding by severity, defined in RHCP_ValidationSeverity: Error means broken at Play time (a null reference, no thrust, no control); Warning means it runs but the behavior is degraded or confusing; Info means an optional, non-blocking suggestion. The Project Doctor uses a parallel scale in RHCP_DoctorStatus: Error (red, blocks the package), Warning (yellow, sub-optimal), Info (neutral note), and Ok (green). Resolve every Error first, then triage Warnings.
When the same symptom can have several root causes, each cause is listed with the diagnostic that distinguishes it. This lets you stop guessing: open the relevant tool, read which rule or check is failing, and apply the matching solution below.
Installation and Setup Issues
These problems appear right after import and affect the whole project. Every one of them is detected by a Project Doctor check, so the fastest path is to open the doctor window and read the rows top to bottom.
Errors on Import: Active Input Handling Is Wrong
Symptoms. The console fills with compile or runtime errors mentioning the Input System; helicopters never respond to keyboard, mouse, or gamepad; v1-style code throws an ArgumentException the moment you press Play.
Causes. RHCP is New Input System only. If Active Input Handling (in Edit ▸ Project Settings ▸ Player ▸ Other Settings) is set to Input Manager (Old) the input layer cannot run. The Project Doctor check RHCP-DOC-01 ("Active Input Handling") reports this: a value of 0 (legacy only) is a hard Error; 2 (Both) works but raises an Info note because it leaves the legacy backend compiled in; the target value is 1 (Input System only), which reports Ok.
Solutions.
- Open Project Doctor and find the Active Input Handling row.
- Click its Fix button. The doctor confirms with a dialog, sets
activeInputHandlerto Input System Package (New), and saves Project Settings. - Restart the Unity Editor. This setting only takes effect on restart, and a running editor re-persists its in-memory value on quit, so you must let the editor restart rather than editing the asset by hand.
After the restart, re-run the doctor and confirm the row is green.
Errors on Import: Input System Package Missing
Symptoms. The project will not compile at all; the console reports unresolved Unity.InputSystem types; RHCP's Runtime/Input assembly is missing from the assembly list.
Causes. The com.unity.inputsystem package is not installed. RHCP's input layer references it directly, so without the package nothing in Runtime/Input can compile or run. Check RHCP-DOC-02 ("Input System package") reports this as an Error — it probes for the loaded Unity.InputSystem assembly.
Solutions. Open Project Doctor, find the Input System package row, and click Fix. After confirming the dialog the doctor calls the Package Manager to add com.unity.inputsystem; the Package Manager shows its own progress and triggers a recompile when it finishes. You can also install it manually via Window ▸ Package Manager ▸ Unity Registry ▸ Input System.
Pink / Magenta Materials (Wrong Render Pipeline)
Symptoms. The helicopter model, particles, or demo scene render solid magenta/pink. Lighting looks wrong. The Game view shows the model as a flat pink silhouette.
Causes. Magenta is Unity's "shader not supported by the active render pipeline" color. RHCP ships material packs for Built-in and URP only; HDRP is not supported. The most common trigger is importing the Built-in material pack into a URP project (or vice versa), or running the project under HDRP. Check RHCP-DOC-03 ("Render pipeline") tells you which pipeline is active: no pipeline asset → "Built-in Render Pipeline" (Ok), a pipeline whose type name contains Universal → "Universal Render Pipeline (URP)" (Ok), and anything else (such as HDRP) → an explicit Warning that the pipeline is unsupported.
Solutions.
- Run Project Doctor and read the Render pipeline row to confirm which pipeline is active.
- Import the matching material pack — Built-in pack for Built-in, URP pack for URP. Do not mix packs.
- If the doctor reports an unsupported pipeline (HDRP), switch the project to Built-in or URP; RHCP does not ship HDRP shaders.
- For an existing URP project, you can also upgrade Built-in materials in place with Edit ▸ Rendering ▸ Materials ▸ Convert All Built-in Materials to URP, but importing the correct pack is the supported path.
For the full Built-in ↔ URP switch procedure, see Installation.
Invisible HUD Text (TextMeshPro Essentials Missing)
Symptoms. The HUD panels and gauges appear, but the numbers and labels (altitude, airspeed, engine state, warnings) are blank. Text simply does not render.
Causes. The HUD uses TextMeshPro, which requires the TMP Essential Resources (it ships the default TMP_Settings asset and the shaders text rendering depends on). Without them, TMP labels render nothing. Check RHCP-DOC-06 ("TextMeshPro essentials") probes for a TMP_Settings asset: present → Ok; absent → an Info note telling you to import the essentials.
A second, subtler cause of invisible (rather than absent) text is a Dynamic TMP font atlas under this project's Play Mode settings — see HUD and Mobile and the note below.
Solutions.
- Import the essentials via Window ▸ TextMeshPro ▸ Import TMP Essential Resources. Re-run the doctor; the TextMeshPro essentials row should go green.
- If the essentials are already imported but text is still invisible, check the font asset's atlas population mode. This project runs Play Mode with domain reload disabled ("Reload Scene only"), under which Dynamic TMP atlases can render as invisible glyphs. Bake the font asset as Static to fix it.
Input Issues
These problems affect controls on a helicopter that otherwise compiles and runs. The Validator covers the wiring side (RHCP-VAL-015, RHCP-VAL-016); the rest are behavioral. For the full control mapping and the cursor model, see Controls and Input.
No Response to Any Control
Symptoms. The helicopter sits inert. No keyboard, mouse, or gamepad input does anything. Collective, cyclic, pedals, and the engine toggle are all dead.
Causes. Three distinct wiring failures produce identical symptoms, and the Validator separates them:
| Diagnostic | Meaning |
|---|---|
RHCP-VAL-015 (Error) |
The helicopter has no RHCP_InputManager component, so the hub never receives control input. |
RHCP-VAL-016 (Error) |
The RHCP_InputManager has no Input Actions asset assigned, so device input cannot bind. |
RHCP-DOC-01 / RHCP-DOC-02 |
The project-level input environment is broken (see Installation and Setup, above). |
Solutions.
- Select the helicopter and open the Validator.
- If
RHCP-VAL-015fires, click its fix to add anRHCP_InputManager(this is a structural change, so it is offered as a single fix rather than part of the unattended Fix-All batch). - If
RHCP-VAL-016fires, click its fix to assign the bundledRHCP_InputActionsasset. - If the helicopter is wired correctly but all RHCP helicopters are dead, the cause is project-level — run Project Doctor and resolve
RHCP-DOC-01andRHCP-DOC-02first.
Mouse Cursor Wanders Off the Window During Flight
Symptoms. While flying with the mouse, the cursor drifts off the play window, clicks land outside the game, and alt-tabbing or hitting other UI becomes awkward. Conversely, you may want the cursor visible but it keeps locking.
Causes. This is by design, not a bug. The RHCP_InputManager captures the OS cursor for the local player while flight input is live — it sets Cursor.lockState to Locked and hides the cursor — so that mouse motion drives the cyclic instead of moving a pointer around the screen. The manager auto-releases the cursor on input lock, when a menu opens, on focus loss, and on the editor Escape key, and re-captures it when you click back into the view. The behavior is controlled by lockCursorDuringFlight on the RHCP_InputConfig asset, which is enabled by default (true).
Solutions.
- To keep the OS cursor free (for example when you drive cyclic with a gamepad or on-screen stick, or while building UI), open the assigned
RHCP_InputConfigasset and unchecklockCursorDuringFlight. - If the cursor is locked when you expect it free, open a menu / settings panel or acquire an input lock — the manager releases the cursor whenever flight input is suppressed. Pressing Escape in the editor also releases it.
- If the cursor is not recaptured after clicking back into the view, confirm the application window actually has focus; capture is gated on focus.
Gamepad Not Detected
Symptoms. Keyboard and mouse work, but a connected gamepad does nothing. Sticks, triggers, and face buttons have no effect.
Causes. The most common cause is the project-level input environment, not the gamepad: if Active Input Handling is still on the legacy backend the New Input System never sees the device (RHCP-DOC-01). The second cause is that the RHCP_InputActions asset is not assigned (RHCP-VAL-016), so no binding exists for the gamepad scheme. A third is simply that Unity has not enumerated the device.
Solutions.
- Run Project Doctor and confirm
RHCP-DOC-01reports Input System only andRHCP-DOC-02reports the package installed. - Run the Validator on the helicopter and clear
RHCP-VAL-016so the actions asset is assigned. - Verify Unity sees the device in Window ▸ Analysis ▸ Input Debugger. If the device is listed there but RHCP still ignores it, re-enter Play Mode so the input manager re-binds its action map to the connected device.
On-Screen (Mobile) Controls Do Not Appear
Symptoms. On a desktop editor the on-screen collective / cyclic / pedals never show; on a touch build they may not show either.
Cause. The on-screen controls are off by default and are enabled per build by an explicit toggle — RHCP does not auto-detect the platform. RHCP_MobileControls shows the controls only when the global Enable Mobile Controls toggle is on (unless forceShow is set, or touchDevicesOnly is cleared on the component).
Solutions.
- For your mobile / touch build, turn on Tools ▸ BoneCracker Games ▸ RHCP ▸ Enable Mobile Controls (a checkmarked toggle; it sets the
RHCP_MOBILE_CONTROLSscripting define and triggers a recompile). The controls then appear on that build. - To preview in the editor without enabling the whole build flag, set
forceShowon theRHCP_MobileControlscomponent, or cleartouchDevicesOnly.
See HUD and Mobile for the on-screen control layout.
On-Screen Controls Show on Desktop / WebGL, and the Cursor Will Not Hide
Symptoms. In a desktop or WebGL build the on-screen thumb controls appear on a mouse-and-keyboard machine, and the mouse cursor stays visible instead of being captured to drive cyclic.
Cause. The Enable Mobile Controls toggle is on for that build. While the on-screen controls are showing they intentionally free the OS cursor (so the pointer can drag the sticks), which is why the cursor no longer hides — the two go together. RHCP does not guess the platform, so on a desktop WebGL browser this is purely down to the toggle being enabled. (Earlier Touchscreen.current-based auto-detection was dropped for exactly this reason: a desktop WebGL browser reports a touchscreen even with no touch hardware.)
Solution. Turn off Tools ▸ BoneCracker Games ▸ RHCP ▸ Enable Mobile Controls for desktop / WebGL builds (it is off by default) and rebuild. With it off, the thumb controls do not load and the cursor is captured and hidden during flight as normal. On WebGL the browser only hides the cursor after the first click into the canvas — that is a Pointer Lock requirement of the browser, not a bug.
Flight Behavior Issues
These problems mean the helicopter flies, but flies wrong. The physics rules in the Validator (RHCP-VAL-003 through RHCP-VAL-012) catch the structural causes; the rest is flight-config tuning, covered in depth by Flight Tuning.
Helicopter Tumbles or Spins Uncontrollably
Symptoms. On the first frame the helicopter flips, barrel-rolls, or pinwheels and never stabilizes. Hover is impossible. It looks like the physics "exploded."
Causes. This is the classic mass/inertia or rotor-collider failure, and several Validator rules target it:
| Diagnostic | Meaning |
|---|---|
RHCP-VAL-003 (Warning) |
The Rigidbody center of mass is outside the collider bounds — the textbook cause of unstable hover and tumbling. |
RHCP-VAL-008 (Warning) |
A collider sits on a rotor node (the rotor's GameObject or its spinning mesh). Colliders on spinning geometry destabilize PhysX. |
RHCP-VAL-009 (Error) |
An extra Rigidbody on a child splits the physics body and breaks the single-rigidbody flight model. |
RHCP-VAL-006 (Warning) |
The hub root scale is not (1,1,1); a scaled root skews mass, inertia, and collider sizing. |
RHCP-VAL-012 (Warning) |
A rotor's visual spin axis is off-plane (cosmetic, but a sign the rotor's frame is mis-authored). |
Solutions.
- Select the helicopter, open the Validator, and run it.
- For
RHCP-VAL-003, click the fix to reset and align the center of mass: it first callsRigidbody.ResetCenterOfMass()to return COM to the PhysX-computed centroid (back inside the collider bounds), then — when the airframe has a main rotor — snaps the COM's horizontal position under the rotor thrust point so hover lift passes through it (the same alignment the Setup Wizard's Snap COM under main rotor hub button applies). To tune further, drag the COM directly with the scene gizmo (Tools ▸ BoneCracker Games ▸ RHCP ▸ Gizmos ▸ Center of Mass). - For
RHCP-VAL-008, click the fix to remove the collider from the rotor node. - For
RHCP-VAL-009, click the fix to remove the extra child Rigidbody (offered as a single fix, not in Fix-All, because it is structural). - For
RHCP-VAL-006, bake the scale on the model import and keep the hub root at unit scale.
If the model is otherwise unconfigured, the fastest cure is to re-run the Setup Wizard (see Setup Wizard), which builds a rotor-aware fuselage collider and a sane mass/inertia from scratch.
Helicopter Behaves Like a Rocket / Will Not Hover
Symptoms. The slightest collective input launches the helicopter skyward; it feels weightless and uncontrollable rather than heavy and floaty.
Causes. The Rigidbody mass is still Unity's default of 1 kg while the flight config specifies a real mass. Until the hub applies the config at Awake, edit-time physics treat a heavy airframe as a 1 kg object, so thrust dwarfs weight. Check RHCP-VAL-004 (Warning, "Rigidbody mass at default") fires when rb.mass == 1 and a flight config with a real mass is assigned.
Solutions. Open the Validator and click the fix for RHCP-VAL-004 — it writes the flight config's mass onto the Rigidbody so edit-time matches runtime. (This is also part of the safe Fix All batch.) If RHCP-VAL-001 is also firing, the helicopter has no flight config at all — fix that first so a real mass exists to copy.
Helicopter Will Not Lift Off At All
Symptoms. Full collective produces no climb. The rotor spins (or appears to) but the helicopter stays on the ground.
Causes. Two structural causes dominate:
| Diagnostic | Meaning |
|---|---|
RHCP-VAL-001 (Error) |
The hub has no RHCP_FlightConfig assigned, so the flight model has no parameters and the airframe category is never applied. |
RHCP-VAL-010 (Error) |
There is no Main-role rotor under the hub. The main rotor is the sole source of thrust; without it the helicopter cannot fly. |
A non-structural cause is the thrust-to-weight ceiling itself: maxThrustToWeight in the flight config (default 1.6) caps how much lift the rotor can produce relative to weight. If it has been lowered toward or below 1.0, the rotor cannot overcome gravity.
Solutions.
- Run the Validator. If
RHCP-VAL-001fires, click its fix to assign the bundled default flight config. - If
RHCP-VAL-010fires, add anRHCP_Rotorwith role Main — the Setup Wizard's rotor-assignment step does this for you. - If both are clean but the helicopter still won't climb, open the flight config and confirm
maxThrustToWeightis above1.0(greater than 1 means the rotor can lift more than the airframe's weight). See Flight Tuning.
Helicopter Slowly Yaws (Rotates) When Hands-Off
Symptoms. With no input, the helicopter holds its position but slowly rotates about the vertical axis — heading creeps at roughly a degree per second — so you tap the pedals now and then to hold a heading. Positional hover itself is stable: the airframe does not accelerate or run away across the map.
Causes. This is intended flight feel, not a wiring fault, so the Validator does not flag it. The tail rotor's anti-torque only partly auto-compensates the main rotor's reaction torque at the default arcade-leaning tuning: AutoTorqueCompensation01 is 1 - profileBlend, so at the default profileBlend of 0.25 about 75% of the reaction torque is cancelled and the remaining ~25% leaves a slow steady yaw the yaw-rate damper cannot fully null. A real helicopter behaves the same way — the pilot rides the anti-torque pedal to hold heading.
Solutions.
- Tap (or hold) the pedals to hold heading, exactly as a real pilot rides the anti-torque pedal. This is expected at the default tuning.
- For fuller automatic anti-torque, move the flight config toward the Arcade end in Flight Tuning: a lower
profileBlendraisesAutoTorqueCompensation01(toward1), cancelling more of the reaction torque so the hands-off yaw shrinks. Moving toward Realistic does the opposite — more pedal work, by design. - Positional drift is already handled by the hover-hold assist (on by default on the Maverick preset) plus airframe drag, so no cyclic trimming is needed to hold station; only heading needs the occasional pedal.
Helicopter Yaws / Spins Slowly With No Pedal Input
Symptoms. Without pedal input the nose creeps around in one direction. At the realistic end of the profile the spin can run away entirely.
Causes. A real main rotor exerts torque on the fuselage (Newton's third law), and the tail rotor exists to counter it — that is anti-torque, which the pedals control as yaw. Check RHCP-VAL-011 (Warning, "Torque reaction without a tail rotor") fires when the flight config models main-rotor torque reaction (ReactionYawAccelAtHover > 0) but no Tail-role rotor is present to counter it. The arcade end of the profile auto-compensates (AutoTorqueCompensation01 is 1 - profileBlend), so this is a warning rather than an error; a coaxial or no-tail drone is also a legitimate exception.
Solutions. Either add an RHCP_Rotor with role Tail (the Setup Wizard can do this), or rely on auto-torque by moving profileBlend toward the arcade end. For a deliberately tail-less airframe (coaxial/drone) the warning is safe to ignore.
Visual and Rendering Issues
Beyond the pink-material and invisible-text cases in the Installation section, a few visual problems are content/setup driven rather than pipeline driven. The Validator flags these as Info because the affected systems are optional and null-guarded by design.
Switched to URP and everything is pink / magenta
RHCP ships standard Unity Built-in shaders. When you switch the project to the Universal Render Pipeline (URP), Built-in shaders can't be rendered by URP, so materials show up solid magenta/pink.
Fix: run Unity's own converter — Window → Rendering → Render Pipeline Converter, tick Material Upgrade (Built-in → URP), then Initialize And Convert. RHCP's materials are all stock Unity shaders, so Unity's converter upgrades them automatically; no RHCP-specific converter is needed.
RHCP will also prompt you about this automatically (a one-time dialog), and flags it in Project Doctor and the Welcome window with a button that opens the converter for you.
Rotor Blades Do Not Appear To Spin
Symptoms. The helicopter flies correctly, but the rotor blades look frozen or sweep the wrong plane.
Causes. Blade spin is purely cosmetic in v2.0. Check RHCP-VAL-014 (Info, "Rotor has no visual spin mesh") fires when a rotor has no spinning mesh assigned — there is simply nothing to animate. Check RHCP-VAL-012 (Warning, "Rotor visual spin axis off-plane") fires when the assigned mesh's spin axis does not match its role's disc plane (the main rotor's disc is horizontal, a tail rotor's is lateral), so the blades sweep the wrong plane.
Solutions. Assign a spinning mesh to the rotor to clear RHCP-VAL-014. For RHCP-VAL-012, click its one-click fix — it re-derives the rotor's spinAxis from the role-aware disc normal (a serialized-field write, so it is also safe for Fix-All).
No Particles (Exhaust, Dust, Crash Explosion)
Symptoms. No exhaust plume, no ground dust on downwash, no explosion on a crash.
Causes. Check RHCP-VAL-018 (Info, "VFX module has no channels wired") fires when the RHCP_VFX module has no exhaust systems, no ground-dust system, and no crash-explosion prefab assigned. Each VFX channel is independent and "empty means off" by design, so an unwired module is silent rather than broken.
Solutions. Assign the bundled particle prefabs to the RHCP_VFX module's exhaust, ground-dust, and crash-explosion slots. Because the channels are independent, you can wire only the ones you want. This is detection-only in the Validator; wire the slots manually in the Inspector.
Helicopter Is Silent
Symptoms. No engine or rotor sound at any RPM.
Causes. Check RHCP-VAL-017 (Info, "Engine audio clips empty") fires when the RHCP_Audio module has neither an engine loop nor a rotor loop clip assigned. Audio is optional and null-guarded, so the result is silence, not an error.
Solutions. Assign an engine loop and/or rotor loop clip to the RHCP_Audio module (the bundled engine WAVs cover start/idle/hard/crash). See HUD and Mobile for HUD warnings and Flight Tuning for how RPM and load drive the audio layers.
Editor and Validator Issues
This section covers using the diagnostics themselves: understanding a finding, applying Fix-All safely, and the boundary/camera rules that round out a complete scene.
Understanding a Validator Warning
Symptoms. The Validator lists findings and you are unsure whether a row is fatal, cosmetic, or safe to ignore.
Causes. Each finding carries a severity (Error / Warning / Info) and a rule Id. Errors break the helicopter at Play time and must be fixed; Warnings mean it runs but degraded; Info rows are optional suggestions (typically an unassigned optional asset). The list is sorted severity-first, so anything above the first Warning is an Error you should clear before shipping. Some rules are detection-only (no automatic fix) because the correct value depends on your project — for example RHCP-VAL-027 (Warning) flags a camera config with collision enabled but its collision mask set to Nothing, which only you can resolve by choosing the right environment layers.
Solutions. Read the message text — every rule includes a human-readable explanation and the recommended action. Click the row to select the offending object. Use the ? link to open the matching documentation anchor. Clear all Errors first, then decide which Warnings matter for your use case; Info rows are safe to leave for later.
Running Fix-All Safely
Symptoms. You want to clean up a helicopter quickly but are wary of an automated batch making structural changes you did not intend.
Causes. The Validator distinguishes two fix tiers. A rule's CanAutoFix means it offers a one-click fix; a separate SafeForFixAll flag means that fix is safe to include in the unattended Fix All (safe) batch. Fixes that add or remove components are deliberately excluded from Fix-All even though they are auto-fixable — for example RHCP-VAL-009 (remove an extra Rigidbody) and RHCP-VAL-015 (add an input manager) are structural and offered only as individual fixes. The safe batch is limited to value writes and asset assignments: assigning the flight config (RHCP-VAL-001), applying the config mass (RHCP-VAL-004), enabling interpolation (RHCP-VAL-005), removing a rotor-node collider (RHCP-VAL-008), re-deriving a rotor spin axis (RHCP-VAL-012), assigning the input actions asset (RHCP-VAL-016), wiring a camera target (RHCP-VAL-020), fixing a boundary trigger (RHCP-VAL-021), and assigning a camera config (RHCP-VAL-025).
Solutions.
- Run the Validator, then click Fix All (safe) to apply only the safe subset in a single, collapsed Undo group.
- Review the remaining structural Errors (such as
RHCP-VAL-009orRHCP-VAL-015) and apply those one at a time, reading each message first. - Every fix is Undo-wrapped — if a result surprises you, press Ctrl+Z to revert it.
Camera and Boundary Findings
Symptoms. The view does not render or does not follow the helicopter; or the helicopter flies out of the world with no recovery.
Causes. The camera rig and boundary zones are validated as scene satellites:
| Diagnostic | Meaning |
|---|---|
RHCP-VAL-019 (Error) |
The RHCP_CameraManager has no Camera assigned, so nothing renders the view. |
RHCP-VAL-020 (Error) |
The camera manager has no target helicopter, so the rig follows nothing. |
RHCP-VAL-025 (Warning) |
The camera manager has no RHCP_CameraConfig, so the camera layers fall back to a hard-coded baseline. |
RHCP-VAL-026 (Error) |
The camera manager has neither a chase nor a cockpit mode behaviour wired. |
RHCP-VAL-021 (Error) |
A RHCP_BoundaryZone has no collider, or its collider is not a trigger, so it can never fire. |
RHCP-VAL-022 (Warning) |
A boundary zone collider has near-zero size and can never be entered. |
RHCP-VAL-023 (Info) |
The helicopter has a Damage module but the scene has no Out-Of-Bounds boundary zone for respawn. |
Solutions. RHCP-VAL-020, RHCP-VAL-021, and RHCP-VAL-025 have one-click fixes (auto-assign the sole helicopter as the target, add or flip a box trigger, and assign the bundled camera config respectively) and are part of the safe Fix-All. The rest are detection-only and are best resolved by re-running the Setup Wizard's camera step or wiring the references by hand. To create a boundary zone quickly, use GameObject ▸ BoneCracker Games ▸ RHCP ▸ Boundary Zone, which drops a 50×50×50 box trigger at the scene view pivot. See Cameras for the camera rig and Setup Wizard for the wizard.
Diagnostic Tools
RHCP ships two diagnostics that together cover almost every problem in this guide. Knowing which one to reach for is half the battle: the doctor is for the project, the validator is for a helicopter.
Project Doctor
The Project Doctor (Tools ▸ BoneCracker Games ▸ RHCP ▸ Project Doctor…) runs six environment checks and reports each with a status and a plain-language message. It is the right tool whenever a problem affects every RHCP helicopter or appears before you press Play. The checks are:
| Check | Title | Reports |
|---|---|---|
RHCP-DOC-01 |
Active Input Handling | Input System only (Ok), Both (Info), or legacy only (Error) — one-click fix available. |
RHCP-DOC-02 |
Input System package | com.unity.inputsystem installed (Ok) or missing (Error) — one-click fix adds it. |
RHCP-DOC-03 |
Render pipeline | Built-in or URP (Ok), or an unsupported pipeline such as HDRP (Warning). |
RHCP-DOC-04 |
Color space | Linear (Ok, recommended) or Gamma (Info; supported, needs a project-wide reimport to change). |
RHCP-DOC-05 |
Unity version | At or above the 6000.3 floor (Ok) or below it (Warning). |
RHCP-DOC-06 |
TextMeshPro essentials | TMP Essential Resources imported (Ok) or missing (Info) with an import hint. |
Checks that can repair themselves (RHCP-DOC-01, RHCP-DOC-02) show a Fix button; any fix that writes Project Settings confirms with a dialog first. The remaining checks are informational because their fixes (a color-space reimport, a Unity upgrade) are project-wide actions you should perform deliberately.
Validator
The Validator (Tools ▸ BoneCracker Games ▸ RHCP ▸ Validator…) runs 26 rules against a chosen scope and is the right tool whenever one specific helicopter misbehaves. You can scope it to the selection, the open scenes, or project prefabs; selecting a hub first focuses the run on that helicopter. Findings are sorted severity-first (Errors, then Warnings, then Info), each row selects its object on click and offers a ? documentation link.
Apply fixes in two tiers: Fix All (safe) for the value-write and asset-assignment subset in one Undo group, then individual fixes for structural changes (adding or removing components). The same engine backs the inline validation strip on the helicopter inspector and the Setup Wizard, so a wizard-built or inspector-cleaned helicopter is validator-clean from the start. Every fix is Undo-wrapped.
The Validator also includes one project-health rule with no scene target: RHCP-VAL-024 (Warning) reflects the runtime assembly for mutable static state, which would leak across Play sessions under this project's disabled-domain-reload setting. It reports zero on the shipped code and exists as a regression guard for your own additions.
Getting Help
If the doctor and validator are both clean and a problem persists, gather a short diagnosis before reaching out: your Unity version (RHCP targets 6000.3.6f1), the active render pipeline (Built-in or URP), the full Console text of any error (with stack trace), and the Project Doctor results. A screenshot of the failing Validator run for the affected helicopter is especially useful because it pins the exact rule.
In-editor, two menu items route you to current resources: Tools ▸ BoneCracker Games ▸ RHCP ▸ Documentation opens the online documentation portal, and Tools ▸ BoneCracker Games ▸ RHCP ▸ Support opens the support channel. For deep scripting and API questions — event signatures, public properties, extension points — consult the XML documentation comments on the runtime types, which document them in detail beyond the scope of this manual (your IDE's IntelliSense surfaces the summaries as you type).
When you contact support, include the reproduction steps and whether the issue happens in the bundled demo scene as well as your own scene; a problem that reproduces in the demo points to an environment or version issue, while one that only appears in your scene points to wiring you can usually resolve with the Validator. See also the FAQ for common questions and the Overview for the architecture map.
Known Issues
The table below lists known behaviors and limitations as of v2.0.0, with the recommended workaround. Several are intentional design choices rather than defects, noted as such.
| Issue | Status / Cause | Workaround |
|---|---|---|
| Hands-off helicopter slowly yaws (rotates) | By design at the default tuning — the tail rotor only partly auto-compensates the main-rotor reaction torque (AutoTorqueCompensation01 = 1 − profileBlend = 0.75 at the default profileBlend 0.25). Positional hover is stable. |
Tap the pedals to hold heading, or move profileBlend toward Arcade for fuller auto-compensation. |
| Cursor locks/hides during flight | By design — mouse motion drives the cyclic. | Disable lockCursorDuringFlight on the RHCP_InputConfig asset, or open a menu / press Escape to release. |
| HDRP renders everything magenta | HDRP is not supported (RHCP-DOC-03 Warning). |
Use Built-in or URP and import the matching material pack. |
| HUD text invisible despite TMP essentials imported | A Dynamic TMP font atlas renders invisibly under disabled domain reload. | Bake the font asset as Static. |
| Mobile on-screen controls hidden | They are off by default; the Enable Mobile Controls build toggle is not set. | Turn on Tools ▸ BoneCracker Games ▸ RHCP ▸ Enable Mobile Controls for the touch build (or set forceShow to preview in the editor). |
| On-screen controls show on desktop / WebGL, and the cursor won't hide | The Enable Mobile Controls build toggle is on (it also frees the cursor for the sticks). | Turn it off for desktop / WebGL builds and rebuild — it is off by default. |
| Some Validator/Doctor entries are detection-only | The correct value depends on your project or on optional content (e.g. RHCP-VAL-014/017/018/023/027, color space, Unity version). |
Apply the change manually following the rule's message. |
RHCP-VAL-009 / RHCP-VAL-015 excluded from Fix-All |
Adding/removing components is structural and intentionally kept out of the unattended batch. | Apply these fixes individually after reviewing the message. |
| Active Input Handling change needs an editor restart | Unity only applies activeInputHandler on restart, and a running editor re-persists it on quit. |
Use the doctor's Fix, then restart the editor — do not hand-edit the asset while the editor runs. |
For version-specific changes and fixes, see the Changelog.