• 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 Party Boy · Apr 04, 2014 at 10:33 AM · c#instantiateprefabdestroyshooting

Destorying prefab and instanstiating again?

Hi. I have a light as a prefab which is being shot. I added a script to the prefab which just updates its position to make it move. In another script attached to my weapon I have code to actually instantiate the prefab and destroy it.

         //What happens when bumper is pressed
         if (isSelectedSpell && SixenseInput.Controllers[1].GetButtonDown (SixenseButtons.BUMPER) && triggerIsPressed == false && freeToShoot) {
             ShootLight();
         }
     }
 
     //Handles shooting the light
     private void ShootLight(){
 
         if(wandLightProjectilePrefab != null){
             wandLightProjectilePrefab = Instantiate(wandLightProjectilePrefab.gameObject, transform.position, transform.parent.transform.rotation) as GameObject;
             StartCoroutine(ShootCooldown(5));
             Destroy(wandLightProjectilePrefab, 5);
         }
     }
 
     IEnumerator ShootCooldown(float cooldown){
         freeToShoot = false;
         yield return new WaitForSeconds(cooldown);
         freeToShoot = true;
     }

So basically I want the light to shoot, 5 second cool down is triggered, the object will move for 5 seconds and stick to the first surface it touches, and destroy after 5 seconds. I then want to be able to shoot again, however this part isn't working. It just doesn't make another and I'm not sure how best to solve this. Thanks for any help

Comment
Add comment · Show 6
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 trololo · Apr 04, 2014 at 11:01 AM 0
Share

Shoot every 5 seconds or more?

avatar image udk_lethal_d0se · Apr 04, 2014 at 11:11 AM 0
Share

Try this:

 private void ShootLight()
 {
     if(wandLightProjectilePrefab != null)
     {
         wandLightProjectilePrefab = Instantiate(wandLightProjectilePrefab.gameObject, transform.position, transform.parent.transform.rotation) as GameObject;
         
         freeToShoot = false;
         Invoke("ShootCooldown", 5f); // Starts the ShootCooldown in 5 seconds.        
     }
 }
  
 private void ShootCooldown()
 {
     freeToShoot = true;
     Destroy(wandLightProjectilePrefab); // Destroy the projectile prefab immediately as 5 seconds have passed.
 }
avatar image Party Boy · Apr 04, 2014 at 11:11 AM 0
Share

@trololo I want to be ABLE to shoot after a 5 second cool down. That all works fine. The object destroys after 5 seconds, but I don't know how to make it so it can be re instantiated after its destroyed

avatar image ArkaneX · Apr 04, 2014 at 11:16 AM 0
Share

As a side note - I suggest to not instantiate/destroy each shoot. Just instantiate projectile, after 5 seconds deactivate it (GameObject.SetActive) and on next shoot set its position/rotation and activate again.

avatar image Benproductions1 · Apr 04, 2014 at 11:17 AM 0
Share

You need to keep a separate reference to the instantiated object. Then your reference to the prefab does not get *null*ified when you destroy the instance and you can make another copy of it.

Show more comments

0 Replies

· Add your reply
  • Sort: 

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.

Welcome to Unity Answers

If you’re new to Unity Answers, please check our User Guide to help you navigate through our website and refer to our FAQ for more information.

Before posting, make sure to check out our Knowledge Base for commonly asked Unity questions.

Check our Moderator Guidelines if you’re a new moderator and want to work together in an effort to improve Unity Answers and support our users.

Follow this Question

Answers Answers and Comments

23 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

Related Questions

Trouble with destroying an instantiated prefab 2 Answers

Destroying Objects. 1 Answer

How to store a prefab in a variable 1 Answer

How do I destroy a Instantiated UI image that is pushed on the Canvas? 2 Answers

Destroying a instantiated prefab? 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