In Unity3D,
I have a weapon script and a stamina script. What I want to do now is to drain stamina when my weapon swings.
I tried my code and i have been playing around with it for a couple of hours.
I am using unity so it also gives me a comment about using new and that I should use Add.component etc so I would appreciate an answer to that question as well!
Hopefully this post is a bit better in terms of the title and information/layout as I am very tired and low on energy. Im going to take a short food break before I get back to it!
Here is the Stamina system:
`
public class HandS : MonoBehaviour {
public int startingHealth = 100;
public int currentHealth;
public int healthReg;
Sword mySword;
bool isRegenHealth;
public float startingStam = 100;
public float currentStam;
public float stamReg;
bool isRegenStam;
void Awake()
{
    currentStam = startingStam;   
}
void Update()
{
    if (currentStam != startingStam && !isRegenStam)
    {
        StartCoroutine(RegainStamOverTime());
    }
}
private IEnumerator RegainStamOverTime()
{
    isRegenStam = true;
    while (currentStam < startingStam)
    {
        Stamregen();
        ReduceStamina(mySword.stamDrain);
        yield return new WaitForSeconds(1);
    }
    isRegenStam = false;
}
public void Stamregen()
{
    currentStam += stamReg;
}
public void ReduceStamina(float _stamDrain)
{
    currentStam -= _stamDrain;
}
}
`
Here is the Sword script:
using UnityEngine;
using System.Collections;
public class Sword : MonoBehaviour {
static Animator anim;
public GameObject hitbox;
HandS hp = new HandS();
public int Sworddamage = 20;
public float sec = 0.5f;
public float maxStamina = 20;
public float  AttackCD;
public float delayBetweenAttacks = 1.5f;
public float stamDrain = 50;
public AudioSource WeaponSource;
public AudioClip WeaponSound;
void Start () {
    anim = GetComponentInParent<Animator>();
    WeaponSource = GetComponent<AudioSource>();
}
// Update is called once per frame
void Update () {
    attack();
    block();
}
public void attack()
{
        if (Input.GetButtonDown("Fire1") && Time.time > AttackCD)
    {
        AttackCD = Time.time + delayBetweenAttacks;
        anim.SetBool("IsAttacking", true);
        hitbox.SetActive(true);
        StartCoroutine(LateCall());
        WeaponSource.PlayOneShot(WeaponSound);
        Debug.Log("hit");
        hp.ReduceStamina(stamDrain);
    }
    else
    {
        anim.SetBool("IsAttacking", false);
    }  
}
public void block()
{
    if (Input.GetButtonDown("Fire2"))
    {
        anim.SetBool("IsBlocking", true);
    }
    else
    {
        anim.SetBool("IsBlocking", false);
    }
}
IEnumerator LateCall()
{
    yield return new WaitForSeconds(sec);
    hitbox.SetActive(false);
}
}