- Home /
Variable suddenly increases with time.deltatime
Hello!
(Not sure what to call this question, this was the best title i could come up with)
I have a script that checks when an player is near an enemy using a raycast. If that is correct, then the attackcharge should increase by time.deltatime. This works fine the first time, the variable increases gradually. However, after i have attacked (sets the variable to zero), the variable instantly increases to max charge.
The max attackcharge is 5, btw.
this is the attack code on the player:
public class PlayerAttack : MonoBehaviour
{
public bool isAttack;
public bool enemyKill;
public bool nearEnemyColorChange;
public NearEnemyCheck nearEnemyCheck;
public AttackBar attackBar;
public float attackScore;
public float attackRange;
public int maxAttackCharge;
public int currentRoundedAttackCharge;
public float currentAttackCharge;
public LayerMask enemyLayers;
public Transform attackPoint;
public Material normalColor;
public Material nearEnemyColor;
public Material attackColor;
public PlayerScore playerScore;
// Start is called before the first frame update
void Start()
{
currentRoundedAttackCharge = maxAttackCharge;
attackBar.SetMaxCharge(maxAttackCharge);
}
// Update is called once per frame
void FixedUpdate()
{
//Also check if collider can made visible in game, in some way
if (Input.GetKey(KeyCode.LeftShift))
{
if (currentRoundedAttackCharge == maxAttackCharge)
{
currentRoundedAttackCharge -= 5;
attackBar.SetAttackCharge(currentRoundedAttackCharge);
StartCoroutine(attackForTime());
//Attack();
}
}
else if (!(Input.GetKey(KeyCode.LeftShift)))
{
isAttack = false;
if (nearEnemyCheck.nearEnemy == true)
{
GetComponent<Renderer>().material = nearEnemyColor;
if (currentRoundedAttackCharge < 5)
{
Debug.Log("yes");
currentAttackCharge += Time.deltaTime;
currentRoundedAttackCharge = Mathf.CeilToInt(currentAttackCharge);
attackBar.SetAttackCharge(currentRoundedAttackCharge);
}
}
else if (nearEnemyCheck.nearEnemy == false)
{
GetComponent<Renderer>().material = normalColor;
}
}
enemyKill = false;
}
IEnumerator attackForTime()
{
float timePassed = 0;
while (timePassed < 3)
{
isAttack = true;
GetComponent<Renderer>().material = attackColor;
Collider2D[] hitEnemies = Physics2D.OverlapCircleAll(attackPoint.position, attackRange, enemyLayers);
foreach (Collider2D enemy in hitEnemies)
{
enemy.GetComponent<EnemyFollow>().Die();
attackScore = (playerScore.Score += 5);
enemyKill = true;
}
timePassed += Time.deltaTime;
yield return null;
}
}
}
Do not hesitate to ask if you need more information!
Thanks in advance!
Your answer
Follow this Question
Related Questions
Adding a value to a variable every second 4 Answers
controlling the increment in the variable 1 Answer
1 Variable Affected By Multiple Variables 2 Answers
detect if a variable has stop increasing 4 Answers
Check increasing float variable 1 Answer