Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 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 henryjoemartin · Jan 21, 2014 at 04:53 AM · animationdelayshooter

How to Let an Animation Finish Before Playing Another?

Right now I have a gun script, but I have 2 errors: 1. I have a counter on the amount of ammo, and you're supposed to be able to shoot two shots, and then the gun automatically reloads, but it doesn't let the second shooting anim finish, it just goes right into the reload anim. 2: Right now, the gun can shoot as many rays, and as fast as you want, but I want it to be more realistic and wait like half a second or 1 second before you're able to shoot again (also you shouldn't be able to shoot while you're reloading)

Sorry about this being such a long question, but any help would be fantastic.

Thanks

 #pragma strict
 
 var sound1: AudioClip;
 
 private var AmmoInGun : int = 2;
 
 var Effect : Transform;
 var TheDammage = 100;
 var Distance = 50;
 var Gun : Transform;
 
 function Update () 
 {    
     var hit : RaycastHit;
     var ray : Ray = Camera.main.ScreenPointToRay(Vector3(Screen.width * 0.5, Screen.height * 0.5, 0));
     
     if(Input.GetMouseButtonDown(0))
     {
         
         if (Physics.Raycast(ray, hit, Distance))
         {
             Shoot();
             
             var particleClone = Instantiate(Effect, hit.point, Quaternion.LookRotation(hit.normal));
             Destroy(particleClone.gameObject, 2);
             hit.transform.SendMessage("ApplyDammage", TheDammage, SendMessageOptions.DontRequireReceiver);
         }
     
     }
     
         if(AmmoInGun == 0)
         {
             Shoot();
             Reload();
         }    
         
         if (Input.GetKeyDown(KeyCode.R))
         {
             Reload();            
         }
 
         if (Gun.animation.isPlaying == false)
         {
             Gun.animation.CrossFade("Idle");
         }
 
 }
 
 
 function Shoot()
 {
         audio.Play();
         Gun.animation.CrossFade("Shoot");
         AmmoInGun -=1;
 
 }
 
 function Reload()
 {
     Gun.animation.CrossFade("RELOAD");
     AmmoInGun = 2;
 }
 
 
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

1 Reply

· Add your reply
  • Sort: 
avatar image
0

Answer by MakinStuffLookGood · Jan 21, 2014 at 05:20 AM

 if(AmmoInGun == 0)
        {
          Shoot();
          Reload();
        } 

You call Reload(), which tells the animation to crossfade to the RELOAD animation, immediately after you call Shoot(). You could use Animation Events and have some call back that checks if you need to reload after the shoot animation. Or you could use a coroutine that waits the length of the shoot animation clip and then calls reload.

As for the second part of your question, again animation callbacks or coroutines could achieve the desired behaviour.

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 henryjoemartin · Jan 21, 2014 at 05:38 AM 0
Share

Great, thanks this is exactly what I was looking for :)

avatar image MakinStuffLookGood · Jan 21, 2014 at 05:46 AM 0
Share

No problem, remember to accept the answer if it solved your issue!

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

19 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

Related Questions

Can I make animations snap to a frame? 1 Answer

Blender Animation Looping Delay Problem 2 Answers

Help ThirdPersonController Script 0 Answers

Animation Problem web player 0 Answers

Delay on animation 0 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