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 jabirmoolur · May 10, 2016 at 06:02 AM · rigidbody2dcollision detectioncollider2dcollision2d

multiple objects on oncollissionstay2d

I have a Kinemetaic floor rigidbody attached with oncollisionstay2d i want to perform some action on all enemeies whihc is on collisionstay with floor, But The action will be performed to one enemy on each hit. I want if there is 5 enemies on floor, to perform condition inside the if condition to be performed for all enimes whihc was onstay with floor

 void OnCollisionStay2D(Collision2D coll)
 {


     if (coll.gameObject.tag == "Enemy")
     {
         if (hit && once)
         {
             GameObject enemy = coll.gameObject;

             Enemy enimtp = (Enemy)enemy.GetComponent("Enemy");
             var animctr = enimtp.GetComponent<Animator>();
             if (enimtp.HP == 2)
             {
                 --enimtp.HP;
                 animctr.SetTrigger("Hit");
             }
             else if (enimtp.HP == 1)
             {
                 animctr.SetTrigger("Awake");
                 ++enimtp.HP;
             }
             once = false;
         }
     }
 }
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 tanoshimi · May 10, 2016 at 06:09 AM 0
Share

OnCollisionStay () does get called once for each object that remains in contact with the collider during this frame.

If you're not getting the behaviour you expected, I'd check your hit and once variables, which seem to be modifying the behaviour.

avatar image jabirmoolur tanoshimi · May 10, 2016 at 06:19 AM 0
Share

The Variable Hit is just a trigger, when the action need to be performed during oncollision stay variable Once, i am using to perform the action only once, otherwise it wil perform same action many times

avatar image tanoshimi jabirmoolur · May 10, 2016 at 06:23 AM 0
Share

And where do you declare those variables? You haven't made them static, have you?

Show more comments
avatar image jabirmoolur · May 10, 2016 at 08:04 AM 0
Share

HI Tanoshimi, Thanks a lot for your great assistance. Actually, what i want to achieve is, when player touches the floor, i want to perform some actions on all enemies which was staying on top of floor. I added variable once because, i wanted to perform this action only once when player touches the floor from underneath of floor, when player just touches and comes back, i want to perfrom some action on all enemies which was staying on top of floor at that time. Thanks you once again Tanoshimi

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.

Follow this Question

Answers Answers and Comments

3 People are following this question.

avatar image avatar image avatar image

Related Questions

Player not taking damage on collision with enemy 1 Answer

Disable click action when collision 1 Answer

Sprites collision not working on high speeds 1 Answer

Enemy bullets pass through my walls 2 Answers

Collision2D only fired on one collider 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