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 FableArman · Aug 18, 2014 at 04:29 PM · collidercollidersshootingbulletcolission

How can I destroy an enemy with two shots

Hi, my enemy script is on c#, and my bullet script is in javascript right now i did this code to whenever i shoot an enemy, the timer should start and wait two seconds, if in that two seconds i shoot the enemy, he would be destroyed, but it never happens because the timer never starts. Here is my bullet script :

 #pragma strict
 
 var BulletSpeed = 5;
 var enemy : GameObject;
 
 var time : float;
 
 function Start () {
 
     
 
 }
 
 function Update () {
 
     transform.Translate(Vector2.up * BulletSpeed);
     
     Destroy(this.gameObject, 2);
 
 
 }
 
 function OnCollisionEnter2D(coll: Collision2D) {
 
     if (coll.gameObject.tag == "Enemy"){
     
         time += Time.deltaTime;
     
     }
     if(time <= 2 && coll.gameObject.tag == "Enemy"){
     
         Destroy(coll.gameObject);
         
         time = 0;
     
     }
 }

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
1

Answer by robertbu · Aug 18, 2014 at 04:50 PM

You have some concepts wrong here, and some code wrong here. First, unless you only have one projectile and are reusing that projectile, this code won't work on the projectile (i.e. you are destroying the projectile so the script ands its values disappear). The better way to structure it would be to place the script on the enemy. Second, this:

     time += Time.deltaTime;

...needs to be executed each frame. Right now you are only incremented at the start of a collision. Here is some alternate code that goes on each enemy.

 #pragma strict
  
 var timer : float = 0.0;
  
 function Update () {
     timer += Time.deltaTime;
 }
  
 function OnCollisionEnter2D(coll: Collision2D) {
     if (coll.gameObject.tag == "Bullet") {
         if (timer < 2.0) {
             Destroy(gameObject);
         }
         else {
             timer = 0.0;
         }
     }
 }

Note the code checks for the tag 'Bullet'. Change this to whatever tag you have on your bullets. It works by increasing the timer every frame, but a bullet strike resets the timer. If a second bullet hits, then the enemy is destroyed.

Comment
Add comment · 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

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

3 People are following this question.

avatar image avatar image avatar image

Related Questions

Problem with rendering component 1 Answer

How to detect correct collision from multiple game objects? Separate collisions 0 Answers

raycasts only working with IsTrigger colliders? 1 Answer

Issue Firing lazer(bullet) in space game. c# 1 Answer

A script that auto generated the box collider around a 3d model 3 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