- Home /
Changing a set value over time and if player presses a button to change rest of the value at once
Hello, I am prototyping a monster RPG and I'm trying to figure out the best way to change a character's value (health, magic) over time when they are attacked or recovering a value. Similar to pokemon when a potion is used, damage was taken, or retrieving experience.
Initially, I am thinking coroutine is best thing do handle this, but I also want the player to wait for the values to finish changing before receiving input unless it is the submit button to skip the change over time and change the values all at once.
case (GameManage.TurnState.POWERUP):
{
// bool to getPower once while in "POWERUP" TurnState
if (!getPower)
{
// start coroutine and set getPower to true
StartCoroutine(UpdatePower(monster));
getPower = true;
}
// once power is 0 from coroutine, go to "CHOOSEACTION" TurnState
if (power == 0)
{
GameObject.Find("GameManager").GetComponent<GameManage>().turnState = GameManage.TurnState.CHOOSEACTION;
}
}
break;
the TurnState is in update method which is why I have a boolean to ensure that coroutine can only be run once.
Here's the code for the coroutine:
private IEnumerator UpdatePower(ActiveMonster monster)
{
// copies values of power for loop
int increasePower = power;
/* for loop to increment monster's current power by one
and decrement power var by one to go to next state */
for (int i = 0; i < increasePower; i++)
{
// if player press "Submit" button
if (Input.GetButtonDown("Submit"))
{
// give remaining power to monster and break
monster.activeMonster.currentPower += power;
power = 0;
break;
}
else
{
monster.activeMonster.currentPower++;
power--;
}
yield return new WaitForSeconds(0.1f);
}
}
The problem I'm having is getting "submit" button to register from the coroutine to break and give the remaining values to the monster. It will take me several inputs before it finally registers. I am guessing it is because coroutines take place after update method?
What other ways can I get this to work?
I should also mention that I have the monster's values such as the life/power meter implemented to scale with their current power and it updates automatically in the update method when it changes.
Thank you in advance!