• 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 /
  • Help Room /
avatar image
0
Question by nathanael_cassagnol · Feb 01, 2016 at 05:01 PM · scripting beginner

Getting Health Script from Collided Gameobject

So I have this one function I can't figure out how to make it work. This C# Script is attached to the projectile I'm trying to pull the Health script from the gameObject the projectile hits so I can then effect only it. The projectiles are very slow so I can't use raycast and any advise on how to grab the health script from only the object this projectile collided with would be helpful.

void Shoot (){

         rb.AddForce (transform.forward * thrust);
 
         // Try and find an EnemyHealth script on the gameobject hit.
             //This is the part I can't figure out
         Health Health = OnCollisonEnter.gameObject.GetComponent <Health> ();
         
         // If the Health component exist...
         if(Health != null)
         {
             // ... the enemy should take damage.
             Health.TakeDamage (damagePerShot);
         }
 
     }
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 Taxen0 · Feb 01, 2016 at 06:57 PM

you can add this method to the projectile.

 void OnCollisionEnter(Collider other) {
         //grab the script.
         Health hp = other.GetComponent<Health>();
         //apply damage.
         hp.TakeDamage(damagePerShot);
         //remove the projectile -- optional.
         Destroy(gameObject);
     }

Also remember you need a Collider component on both the enemy and projectile, and at least one of then must have a Ridgidbody as well.

Depending on the game it is also a good idea to add some kind of timeout or boundary for the projectiles, so they don't fly off the screen and use up unnecessary memory.

You may also want to check the tag of whatever you hit and make sure it is a Enemy if there are other objects present.

 if (other.tag == "Enemy"){
     //do stuff..
 }

See http://docs.unity3d.com/ScriptReference/Collider.html for info about colliders.

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.

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

4 People are following this question.

avatar image avatar image avatar image avatar image

Related Questions

How can i make a mouse look script with contraints? 0 Answers

Distance between two objects (one being a new spawning object)? 0 Answers

CAMERAS ERROR , I NEED HELP 0 Answers

UI button issue with variable + inspector 0 Answers

* A simple script where every single time my character jumps it will increase speed *, * A needed script where every time you perform a jump and land your speed increases * 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