Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by nicoolsen10 · Jun 30, 2019 at 08:49 PM · enemythrowing

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--;
         }
     }
 


Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

2 Replies

· Add your reply
  • Sort: 
avatar image
3
Best Answer

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;
 }
Comment
Add comment · Show 2 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image nicoolsen10 · Jun 30, 2019 at 09:53 PM 0
Share

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

avatar image ChrisD0 nicoolsen10 · Jun 30, 2019 at 10:37 PM 0
Share

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)

avatar image
1

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.

Comment
Add comment · Show 1 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image nicoolsen10 · Jun 30, 2019 at 09:19 PM 0
Share

So how do you want me to put it into my code if you can help me?

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

110 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

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


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges