60 lines
1.7 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|
|
|