- Home /
Enemy attacking to fast
So I have this enemy there is going to throw stone but I have that one problem that it throws all of it stone at once and I want it to wait between each throw can someone help me?
{
TargetFinder();
if (myTarget == null)
currentTargetDistance = searchRadius;
else
Move(myTarget.transform);
{
if (currentStones > 0)
{
if (currentTargetDistance <= throwRadius)
{
DoThrow();
MoveSpeed = 0f;
}
}
void DoThrow()
{
myTarget = null;
currentTargetDistance = searchRadius;
Instantiate(Stone, new Vector3(), Quaternion.identity);
currentStones--;
}
}
Answer by Cornelis-de-Jager · Jun 30, 2019 at 09:36 PM
below is an example of doing CoRoutines.
// New Variable To Introduce
public bool onCooldown = false;
public float cooldownTime = 1f;
// Ensure the target is in range and the throw is not on cooldown
if (currentTargetDistance <= throwRadius && !onCooldown)
{
StartCoroutine(ThrowDelayLogic()); // Replace DoThrow() with ThrowDelayLogic()
MoveSpeed = 0f;
}
// IEnumerator that will wait for x amount of seconds
IEnumerator ThrowDelayLogic () {
DoThrow();
onCooldown = true;
yield return WaitForSeconds (delay);
onCooldown = false;
}
so I tried to use that but it comes with these two errors how do I fix them?
first one: Non-invocable member "WaitForSecond" cannot be used like a method
second one: The name "delay" does not exist in the current context
For the first error, it should be fixed by putting 'new' before WaitForSecond. The second error means that you don't have a 'delay' variable. Simply make a delay variable and assign your desired delay value to it, or just put the value directly in, for example WaitForSecond(1f)
Answer by ChrisD0 · Jun 30, 2019 at 09:07 PM
The best way to delay actions in Unity is through the use of Coroutines, I highly recommend reading up on them if you haven't already. You would turn the DoThrow() function into a couroutine, and within it you would have
yield return new WaitForSeconds(time);
Where time is a float that would delay the next cycle by that many seconds.
So how do you want me to put it into my code if you can help me?
Your answer
Follow this Question
Related Questions
EnemyAI C# Error 1 Answer
If Enemy Health (< 10) then Exp (+10)? 1 Answer
Making enemy push player 1 Answer
Hurt Player if close to Enemy! Need Help 4 Answers
Make Enemy Solid Object 2 Answers