Files
AppleHillsProduction/Assets/Scripts/Common/Input/SlingshotConfig.cs
2025-12-07 20:34:43 +01:00

60 lines
1.7 KiB
C#

using System;
using UnityEngine;
namespace Common.Input
{
/// <summary>
/// Configuration for slingshot launch mechanics.
/// Can be embedded in any minigame settings that use drag-to-launch.
/// </summary>
[Serializable]
public class SlingshotConfig
{
[Header("Drag & Force Settings")]
[Tooltip("Distance to reach max force")]
public float maxDragDistance = 5f;
[Tooltip("Base force value")]
public float baseLaunchForce = 20f;
[Tooltip("Minimum threshold (0-1)")]
[Range(0f, 1f)]
public float minForceMultiplier = 0.1f;
[Tooltip("Maximum cap (0-2, usually 1)")]
[Range(0f, 2f)]
public float maxForceMultiplier = 1f;
[Header("Trajectory Settings")]
[Tooltip("Number of preview points")]
public int trajectoryPoints = 50;
[Tooltip("Time between points")]
public float trajectoryTimeStep = 0.1f;
[Tooltip("Show trajectory after launch (seconds, 0 = no lock)")]
public float trajectoryLockDuration = 2f;
[Header("Input")]
[Tooltip("Auto-register with InputManager on Enable()")]
public bool autoRegisterInput = true;
/// <summary>
/// Calculate force from drag parameters using configured multipliers
/// </summary>
public float CalculateForce(float dragDistance, float dragRatio)
{
return dragRatio * maxForceMultiplier * baseLaunchForce;
}
/// <summary>
/// Calculate minimum force threshold
/// </summary>
public float GetMinForce()
{
return baseLaunchForce * minForceMultiplier;
}
}
}