• 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 humbled · Apr 26, 2012 at 07:44 PM · physicsontriggerenterontriggerexitpower up

How to use OnCollisionEnter() and OnTriggerEnter() with physics to make ball bounce off and pass through bricks?

Objective:Only make the ball bounce of the brick when the star power up is NOT activated. If the ball's star power up IS activated,make the ball travel through the brick without physics affecting the ball.

Strategy: If the ball has the star power up activated; then change the bricks colliders into trigger colliers so that physics don't affect the ball bouncing on the bricks.

Actual:when the star power up is activated; what's happening, is that the ball will bounce off the brick on the first time its collides with that brick; then on the second time it collides with that brick it will finally pass through the brick without bouncing off.

Limitations:I cant set the bricks to always be trigger colliders because i require the bricks to have physics properties when colliding with other game objects.

////////////////////////////////////////////// // THE CODE ///////////////////////////////////////////// //NOTES:The following coding is in the Brick.cs ------- All bricks use this script //NOTES:The brick object knows what a ball is //NOTES: The ball uses capsule collider that has a physics material that makes the ball always bounce in opposite direction

void Update() {

     // change brick physics depending on ball powerup
     if (this.ball.starActivated == false)
         this.collider.isTrigger = false;
 }



 void OnCollisionEnter(Collision other) 
 {
     if (this.gameObject.CompareTag("brickCollision") && 
         other.gameObject.tag == "ballCollision"))
     {
        // only kill(destroy) the brick if the star powerup is activated 
        if(this.ball.starPowerUpActivated == false)
         this.killBrick();

        // change brick physics depending on ball powerups
    //if the star powerup is activated then make the brick collider trigger
        if (this.ball.starPowerUpActivated == true)
            this.collider.isTrigger = true;
       
     }
 }


 void OnTriggerExit(Collider other) 
 {
     if (this.gameObject.CompareTag("brickCollision") &&
     other.gameObject.tag == "sonicStarCollision"))
     {
        // only kill(destroy) the brick if the star powerup is activated 
        if(this.ball.starPowerUpActivated)
         this.killBrick();
     }
 }

I tried changing the code from OnTriggerExit() to OnTriggerEnter() and OnTriggerStay(); however, they all have the same result. I suppose i can make the bricks have 2 colliders(1 normal collider and another trigger collider); however i dont want to use so many colliders because there is already too many physics and graphics in the program and i am trying to use the least amount of computer and graphics processing as possible.

Someone please help!!!

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 Lo0NuhtiK · Apr 26, 2012 at 07:54 PM 0
Share

Ignore Collision

avatar image humbled · Apr 29, 2012 at 06:21 PM 0
Share

thank you fro introducing me to Ignore Collsion function.....however now when i call Physics.IgnoreCollision() it causes the ball collider to ignore all colliders?

Basically when I call Physic.IgnoreCollision() inside of FixedUpdate() or inside Update() then the ball colliders ignores all colliders. If i call Physic.IgnoreCollision() inside of OnCollisionEnter() then it will only ignore the collision until the second time it hits the brick?

Thanks Once again:)

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.

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

OnTriggerEnter only working once. 0 Answers

enable disable object script error? 1 Answer

OnTriggerExit doesn't work when scaling collider 0 Answers

OnTriggerExit is not calling 2 Answers

Enemy can't trigger a hit when the player doesn't move 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