• 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 Leniaal · Jun 26, 2013 at 08:31 PM · raycastshootingparent

Raycast always affects the same object

Hello

So I'm having a bit trouble with me shooting my enemies. When I shoot an enemy:

 if (Physics.Raycast (muzzle.transform.position, muzzle.transform.TransformDirection (Vector3.forward), out hit)) {
                         Debug.DrawRay(muzzle.transform.position, muzzle.transform.TransformDirection (Vector3.forward), Color.red, 2);
                         if(hit.transform.tag == "Enemy")
                         {
                             GameObject.FindGameObjectWithTag("Enemy").GetComponent<GotHit>().BulletHit();
                         }

This method gets called:

 public void BulletHit() {
         if(transform.parent.gameObject.GetComponent<Unit>().Health > 0)
         {
             transform.parent.gameObject.GetComponent<Unit>().Health = transform.parent.gameObject.GetComponent<Unit>().Health - 100;
             if(transform.parent.gameObject.GetComponent<Unit>().Health <= 0)
             {
                 animation.Play("death3");
             }
         }
     }

The weird thing(for me) is that the animation always plays on the first enemy in my project hierarchy. No matter what enemy I shoot. This is really confusing me. After the first enemy in my hierarchy dies, nothing seems to happen to any of the other enemies in my game, since it still just keeps calling to the same object.

Does anybody have any idea why my game is behaving like this?

Thanks in advance!

Comment
Add comment · Show 2
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 Leniaal · Jun 26, 2013 at 10:08 PM 0
Share

You are right, and it turns out my approach was completely wrong. All I had to do to fix the problem was replacing

GameObject.FindGameObjectWithTag("Enemy").GetComponent().BulletHit();

with

hit.transform.Send$$anonymous$$essage("BulletHit", Send$$anonymous$$essageOptions.DontRequireReceiver);

Thank you for your time and response

avatar image Em3rgency · Jun 26, 2013 at 10:12 PM 0
Share

Converted to answer

1 Reply

· Add your reply
  • Sort: 
avatar image
0

Answer by Em3rgency · Jun 26, 2013 at 09:40 PM

First of,

 GameObject.FindGameObjectWithTag("Enemy").GetComponent<GotHit>().BulletHit();

Can just be

 hit.transform.GetComponent<GotHit>().BulletHit();

Second, why are you killing the parent objects of the objects that get hit? Does every enemy have its own unique parent?

And again,

 transform.parent.gameObject.GetComponent<Unit>().Health = transform.parent.gameObject.GetComponent<Unit>().Health - 100;

would be the same as

 transform.parent.gameObject.GetComponent<Unit>().Health -= 100;
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

16 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

Related Questions

Make an Enemy Shoot through Raycast 1 Answer

shooting raycast 1 Answer

scripting problem 0 Answers

Why does the wrong enemy die with this raycast? C# 2 Answers

Class hierarchy, gameObject, Raycast 1 Answer


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