Space-Smash-Out/Assets/ScriptableObjects/BaseShipProperties.cs

68 lines
3.3 KiB
C#

using System.Collections.Generic;
using log4net.Config;
using ShipHandling;
using UnityEngine;
/// <summary>
/// Contains everything what makes a ship a ship, from the ship actor/3D-Model prefab to all the
/// properties which are unique to it's controls and behavior.
/// </summary>
[CreateAssetMenu(fileName = "BaseShip", menuName = "ScriptableObjects/BaseShip")]
public class BaseShipProperties : ScriptableObject
{
[Header("Life")]
[Tooltip("The lifekind. Perchance.")]
public float MaximumHealth = 1000;
[Header("Basic Movement")]
[Tooltip("The acceleration applied on thrust input.")]
public float ThrustAcceleration = 2000;
[Tooltip("The velocity with which the character can rotate around it's center.")]
public float SteerVelocity = 360;
[Header("Max Velocity & Drag")]
[Tooltip("The standard limit of character velocity.")]
public float NormalMaxVelocity = 15f;
[Tooltip("The absolute maximum of character velocity (enforced by drag).")]
public float AbsolutMaxVelocity = 25f;
[Tooltip("The drag which acts opposite to the characters movement direction normally.")]
public float NormalDrag = 5f;
[Tooltip("The maximum drag which can act opposite to the characters movement direction.")]
public float MaximumDrag = 10f;
[Tooltip("The drag which acts opposite to the characters rotation direction normally.")]
public float TorqueDrag = 0.2f;
[Header("Gravity Strength")]
public float GravityStrength = 30f;
[Header("Anti-Drift")]
[Tooltip("The amount to which the drift of the character is reduced when anti-drift is active.")]
public float AntiDriftAmount = 12;
[Tooltip("The amount to which the drift of the character is always reduced.")]
public float MinAntiDriftFactor = 0.03f;
[Header("Boost")]
[Tooltip("The time which is used up when a player uses boost.")]
public float MaxBoostCapacity = 3.3f;
[Tooltip("The point at which a player can boost again when boost is reloading.")]
public float MinBoostCapacity = 0.15f;
[Tooltip("The factor with which the thrust is multiplied while boosting.")]
public float BoostMagnitude = 1.5f;
[Tooltip("The flat tax on the boost when outside of a recharging zone (capacity -= rate * time in seconds).")]
public float OutsideBoostRate = 0.0f;
[Tooltip("The factor of gravity which is eliminated by boosting (1 = no gravity).")]
public float BoostAntiGravityFactor = 0.33f;
[Header("Stun & Tackle")]
[Tooltip("The factor by which the player looses control over the character when being stunned (0 = no control).")]
public float StunLooseControlFactor = 0.1f;
[Tooltip("Time until the tackling player can be tackled again")]
public float TacklingGraceTime = 0.6f;
[Tooltip("Time until the tackled player can be tackled again")]
public float TackledGraceTime = 0.6f;
[Tooltip("The time it takes for a critically stunned character to be controlable again.")]
public float TackledCriticalStunTime = 0.6f;
[Tooltip("The time it takes for a normally stunned character to be controlable again.")]
public float TackledBodyStunTime = 0.3f;
[Tooltip("The power with which the character is tackled away, when hit critically.")]
public float CriticalTacklePowerFactor = 60f;
[Tooltip("The power with which the character is tackled away, when hit normally.")]
public float NormalTacklePowerFactor = 40f;
[Header("Ship sounds")]
public ShipAudio Audio;
}