feat: OctoPlayer sensitivity settings for mouse & controller

This commit is contained in:
Alexandre Coirier
2026-06-03 00:30:36 +02:00
parent 29b12211c8
commit 1de359e000
3 changed files with 26 additions and 16 deletions
+13 -6
View File
@@ -326,14 +326,17 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 320cde26f18d40b40a31c85e85ee4e59, type: 3} m_Script: {fileID: 11500000, guid: 320cde26f18d40b40a31c85e85ee4e59, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: Assembly-CSharp::Unheimlich.World.CameraSystem.LostFootageRig m_EditorClassIdentifier: Assembly-CSharp::Unheimlich.World.CameraSystem.LostFootageRig
_isActive: 1
_masterIntensityInspector: 1
_stressLevel: 0
_stressAmplitudeMul: 2.5
_stressSpeedMul: 1.8
_idleAmplitude: 0.25 _idleAmplitude: 0.25
_idleNoiseSpeed: 0.6 _idleNoiseSpeed: 0.6
_walkAmplitude: 0.8 _walkAmplitude: 0.8
_walkNoiseSpeed: 1.4 _walkNoiseSpeed: 1.4
_runAmplitude: 1.8 _runAmplitude: 1.8
_runNoiseSpeed: 2.5 _runNoiseSpeed: 2.5
_stressAmplitudeMul: 2.5
_stressSpeedMul: 1.8
_moveTSmoothSpeed: 4 _moveTSmoothSpeed: 4
_idleJoltAmplitude: 0.5 _idleJoltAmplitude: 0.5
_idleJoltIntervalRange: {x: 2, y: 4} _idleJoltIntervalRange: {x: 2, y: 4}
@@ -348,9 +351,13 @@ MonoBehaviour:
_inertiaStrength: 4 _inertiaStrength: 4
_inertiaDamping: 6 _inertiaDamping: 6
_inertiaMaxAngle: 8 _inertiaMaxAngle: 8
_spinMaxYAngle: 6
_spinMaxZAngle: 2.5
_spinNoiseSpeed: 0.08
_spinDamping: 2
_fadeDuration: 0.6 _fadeDuration: 0.6
_debugSustainStress: 0 _debugOverrideStress: 0
_debugStressValue: 0 _debugStressOverride: 0
--- !u!1 &4625798697874999476 --- !u!1 &4625798697874999476
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -533,8 +540,8 @@ MonoBehaviour:
JumpAction: -1877919292 JumpAction: -1877919292
_firstPerson: _firstPerson:
Camera: {fileID: 3666612565151794712} Camera: {fileID: 3666612565151794712}
SensitivityX: 0.1 MouseSensitivity: {x: 0.1, y: 0.1}
SensitivityY: 0.1 GamepadSensitivity: {x: 140, y: 140}
MinPitch: -80 MinPitch: -80
MaxPitch: 80 MaxPitch: 80
ReferenceYaw: 0 ReferenceYaw: 0
@@ -82,11 +82,11 @@ namespace OctoCore.Components
[Header("Settings")] [Header("Settings")]
[Tooltip("Horizontal sensitivity (Yaw).")] [Tooltip("Mouse sensitivity (Yaw & Pitch).")]
public float SensitivityX = 0.1f; public Vector2 MouseSensitivity = new Vector2(.1f, .1f);
[Tooltip("Vertical sensitivity (Pitch).")] [Tooltip("Controller sensitivity (Yaw & Pitch).")]
public float SensitivityY = 0.1f; public Vector2 ControllerSensitivity = new Vector2(140, 140);
[Tooltip("Minimum pitch (looking down).")] [Tooltip("Minimum pitch (looking down).")]
public float MinPitch = -80f; public float MinPitch = -80f;
@@ -350,16 +350,18 @@ namespace OctoCore.Components
if (_settings.AllowLook) if (_settings.AllowLook)
{ {
float mouseX = delta.x * _firstPerson.SensitivityX; bool isController = OctoCore.Instance.Platform.Controller;
float mouseY = delta.y * _firstPerson.SensitivityY * -1; Vector2 sensitivity = isController ? _firstPerson.ControllerSensitivity * Time.deltaTime : _firstPerson.MouseSensitivity;
_state.Yaw += mouseX; Vector2 look = delta * new Vector2(sensitivity.x, sensitivity.y * -1);
_state.Yaw += look.x;
float halfRange = _firstPerson.RangeYaw * 0.5f; float halfRange = _firstPerson.RangeYaw * 0.5f;
float deltaYaw = Mathf.DeltaAngle(_firstPerson.ReferenceYaw, _state.Yaw); float deltaYaw = Mathf.DeltaAngle(_firstPerson.ReferenceYaw, _state.Yaw);
deltaYaw = Mathf.Clamp(deltaYaw, -halfRange, halfRange); deltaYaw = Mathf.Clamp(deltaYaw, -halfRange, halfRange);
_state.Yaw = _firstPerson.ReferenceYaw + deltaYaw; _state.Yaw = _firstPerson.ReferenceYaw + deltaYaw;
_state.Pitch = Mathf.Clamp(_state.Pitch + mouseY, _firstPerson.MinPitch, _firstPerson.MaxPitch); _state.Pitch = Mathf.Clamp(_state.Pitch + look.y, _firstPerson.MinPitch, _firstPerson.MaxPitch);
} }
if (_state.Driver) if (_state.Driver)
@@ -227,11 +227,13 @@ namespace OctoCore.Inputs
{ {
var actionInfo = kvp.Value; var actionInfo = kvp.Value;
Vector2 value = actionInfo.Reference.action.ReadValue<Vector2>();
// Only poll enabled actions with callbacks // Only poll enabled actions with callbacks
if (actionInfo.Enabled && if (actionInfo.Enabled &&
actionInfo.Reference != null && actionInfo.Reference != null &&
(actionInfo.CallbacksList.Count > 0 || actionInfo.CallbacksVector2List.Count > 0) && (actionInfo.CallbacksList.Count > 0 || actionInfo.CallbacksVector2List.Count > 0) &&
actionInfo.Reference.action.IsPressed()) value.sqrMagnitude > .0001f)
{ {
// Call Action callbacks // Call Action callbacks
foreach (var callback in actionInfo.CallbacksList.ToArray()) foreach (var callback in actionInfo.CallbacksList.ToArray())
@@ -242,7 +244,6 @@ namespace OctoCore.Inputs
// Call Vector2 callbacks // Call Vector2 callbacks
foreach (var callback in actionInfo.CallbacksVector2List.ToArray()) foreach (var callback in actionInfo.CallbacksVector2List.ToArray())
{ {
Vector2 value = actionInfo.Reference.action.ReadValue<Vector2>();
callback?.Invoke(value); callback?.Invoke(value);
} }
} }