Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 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 Toadill9114 · Jan 05, 2017 at 07:05 AM · raycasting

Is it possible to raycast multiple objects of the same tag (Enemy)

alt text Here is what I got so far. I am trying to allow my bullets to pass through multiple targets(Zombies) instead of stopping at just one. In other words I will fire one bullet and this bullet will hit any zombie in line with my shot when I fire. So it will go through the first zombie and hit the next and possible stop at three or not.

 if (hit.transform.tag == "Enemy")
             {
                 hit.collider.SendMessageUpwards("ApplyDamage", damage, SendMessageOptions.DontRequireReceiver);
 
                 GameObject bloodHole = Instantiate(Blood, contact, rotation) as GameObject;
                 if (Physics.Raycast(position, direction, out hit, Mathf.Infinity/*range*/, layerMask.value))
                 {
                     if (hit.rigidbody)
                     {
                         hit.rigidbody.AddForceAtPosition(force * direction, hit.point);
                     }
                 }
                 Physics.IgnoreCollision(hit.collider, GameObject.FindWithTag("Enemy").transform.root.GetComponent<Collider>());
             }
capture.png (27.1 kB)
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
Best Answer

Answer by Toadill9114 · Jan 05, 2017 at 05:56 AM

Okay well after looking around a bit I did find a now working solution to this. As you will see below in the code I had to create an array 'RaycastHit[] hits;' So that I could record all raycast hits with this tag and apply damage to them all at once within a for loop. So here is the chunk of code that made this work `hits = Physics.RaycastAll(position, direction, range);

 RaycastHit[] hits;
 hits = Physics.RaycastAll(position, direction, range);
 for (int i = 0; i < hits.Length; i++) 
 {
    if (hits[i].transform.tag == "Enemy") 
   {
     hits[i].collider.SendMessageUpwards("ApplyDamage", damage, SendMessageOptions.DontRequireReceiver);
     
     GameObject bloodHole = Instantiate (Blood, contact, rotation) as GameObject;
     if (Physics.Raycast (position, direction, out hits[i], range, layerMask.value)) 
     {
         if (hits[i].rigidbody) 
         {
            hits[i].rigidbody.AddForceAtPosition (force * direction, hit.point);
         }
     }
    }
   }
   }
                         

                    
 
 
 
 
 





Comment
Add comment · Show 1 · 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 farooqiasfandyar · May 30, 2021 at 08:47 AM 0
Share

I'm looking for a similar logic. Like my game includes a gun that'd automatically identify and shoot the the enemies the raycast hits in the range provided. So can you help me that as in to make sure the ray doesn't hit the same enemy transform twice?

Thanks

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

5 People are following this question.

avatar image avatar image avatar image avatar image avatar image

Related Questions

Multiple Camera.main.ScreenPointToRay 1 Answer

How to destroy a gameObject when hit by Raycast? 4 Answers

Shotlock System 1 Answer

Ground Hugging Vehicle 1 Answer

wasd movement rigidbody no bouncing 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