Add practice range: shooting, AK47, intro cinematic, dressed warehouse scene

- PortalTestDestination practice range: Valorant-style hitscan rifle (recoil,
  spray/bloom, reload, controller support), debug HUD, practice-dummy targets
  with head/body hitboxes, hit/death/respawn animations, procedural SFX/FX
- AK47 model (Quaternius, CC0) held via Animator IK, with fire/reload/equip anims
- Intro cinematic (camera shots, title card, target beam-in, GO hand-off)
- Scene dressing editor pass: CC0 textures, props, warehouse roof, lighting and
  post-processing; custom stylized skybox shader
- CharacterMovement: camera recoil, shoulder offset, cinematic control lock
- Unity CLI pipeline package; plus in-progress chat/Rive/player changes

Asset credits: Assets/Models/Props/PROPS_CREDITS.txt (3 CC-BY 3.0 props),
Assets/Textures/Range/TEXTURES_LICENSE.txt, Assets/Resources/*/..._LICENSE.txt

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
pelpanagiotis
2026-09-25 08:56:35 +03:00
co-authored by Claude Opus 5.5
parent c674d76549
commit 5fc9ebf1e6
211 changed files with 34492 additions and 177 deletions
+39
View File
@@ -109,6 +109,15 @@ public partial class @PlayerInput: IInputActionCollection2, IDisposable
""processors"": """",
""interactions"": """",
""initialStateCheck"": false
},
{
""name"": ""Look"",
""type"": ""Value"",
""id"": ""b16172bb-59f4-4ac9-9ea9-3c4b9c7f21fd"",
""expectedControlType"": ""Vector2"",
""processors"": """",
""interactions"": """",
""initialStateCheck"": true
}
],
""bindings"": [
@@ -133,6 +142,17 @@ public partial class @PlayerInput: IInputActionCollection2, IDisposable
""action"": ""Run"",
""isComposite"": false,
""isPartOfComposite"": false
},
{
""name"": """",
""id"": ""a2e6dc3d-8a2b-4a19-9d0a-0b7cf7a1a9e2"",
""path"": ""<Gamepad>/rightStick"",
""interactions"": """",
""processors"": ""StickDeadzone"",
""groups"": """",
""action"": ""Look"",
""isComposite"": false,
""isPartOfComposite"": false
}
]
}
@@ -143,6 +163,7 @@ public partial class @PlayerInput: IInputActionCollection2, IDisposable
m_CharacterControls = asset.FindActionMap("CharacterControls", throwIfNotFound: true);
m_CharacterControls_Movement = m_CharacterControls.FindAction("Movement", throwIfNotFound: true);
m_CharacterControls_Run = m_CharacterControls.FindAction("Run", throwIfNotFound: true);
m_CharacterControls_Look = m_CharacterControls.FindAction("Look", throwIfNotFound: true);
}
~@PlayerInput()
@@ -225,6 +246,7 @@ public partial class @PlayerInput: IInputActionCollection2, IDisposable
private List<ICharacterControlsActions> m_CharacterControlsActionsCallbackInterfaces = new List<ICharacterControlsActions>();
private readonly InputAction m_CharacterControls_Movement;
private readonly InputAction m_CharacterControls_Run;
private readonly InputAction m_CharacterControls_Look;
/// <summary>
/// Provides access to input actions defined in input action map "CharacterControls".
/// </summary>
@@ -245,6 +267,10 @@ public partial class @PlayerInput: IInputActionCollection2, IDisposable
/// </summary>
public InputAction @Run => m_Wrapper.m_CharacterControls_Run;
/// <summary>
/// Provides access to the underlying input action "CharacterControls/Look".
/// </summary>
public InputAction @Look => m_Wrapper.m_CharacterControls_Look;
/// <summary>
/// Provides access to the underlying input action map instance.
/// </summary>
public InputActionMap Get() { return m_Wrapper.m_CharacterControls; }
@@ -276,6 +302,9 @@ public partial class @PlayerInput: IInputActionCollection2, IDisposable
@Run.started += instance.OnRun;
@Run.performed += instance.OnRun;
@Run.canceled += instance.OnRun;
@Look.started += instance.OnLook;
@Look.performed += instance.OnLook;
@Look.canceled += instance.OnLook;
}
/// <summary>
@@ -293,6 +322,9 @@ public partial class @PlayerInput: IInputActionCollection2, IDisposable
@Run.started -= instance.OnRun;
@Run.performed -= instance.OnRun;
@Run.canceled -= instance.OnRun;
@Look.started -= instance.OnLook;
@Look.performed -= instance.OnLook;
@Look.canceled -= instance.OnLook;
}
/// <summary>
@@ -347,5 +379,12 @@ public partial class @PlayerInput: IInputActionCollection2, IDisposable
/// <seealso cref="UnityEngine.InputSystem.InputAction.performed" />
/// <seealso cref="UnityEngine.InputSystem.InputAction.canceled" />
void OnRun(InputAction.CallbackContext context);
/// <summary>
/// Method invoked when associated input action "Look" is either <see cref="UnityEngine.InputSystem.InputAction.started" />, <see cref="UnityEngine.InputSystem.InputAction.performed" /> or <see cref="UnityEngine.InputSystem.InputAction.canceled" />.
/// </summary>
/// <seealso cref="UnityEngine.InputSystem.InputAction.started" />
/// <seealso cref="UnityEngine.InputSystem.InputAction.performed" />
/// <seealso cref="UnityEngine.InputSystem.InputAction.canceled" />
void OnLook(InputAction.CallbackContext context);
}
}
+20
View File
@@ -23,6 +23,15 @@
"processors": "",
"interactions": "",
"initialStateCheck": false
},
{
"name": "Look",
"type": "Value",
"id": "b16172bb-59f4-4ac9-9ea9-3c4b9c7f21fd",
"expectedControlType": "Vector2",
"processors": "",
"interactions": "",
"initialStateCheck": true
}
],
"bindings": [
@@ -47,6 +56,17 @@
"action": "Run",
"isComposite": false,
"isPartOfComposite": false
},
{
"name": "",
"id": "a2e6dc3d-8a2b-4a19-9d0a-0b7cf7a1a9e2",
"path": "<Gamepad>/rightStick",
"interactions": "",
"processors": "StickDeadzone",
"groups": "",
"action": "Look",
"isComposite": false,
"isPartOfComposite": false
}
]
}