• 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 Glark · Aug 01, 2012 at 10:20 PM · rigidbodyonmousedown

Using OnMouseDown to enable useGravity on other objects, not the object clicked.

Hello there! Thanks for your time. I have created a button that will turn on lights in my scene, and render/derender meshes, but I also would like a single click of this button to drop 3 large cubes into the level. I thought of going with instantiate but I've posed the cubes in a way that I quite like. My solution to get them into the level was to just turn off their gravity in the inspector and then turn it on with the button on the wall. BUT! Rigidbody components do not work precisely the same as the Light component. So, for the past couple of hours I've tried to figure this out. I've looked at the API Refs, tried Find Component and other trigger/collider based solutions, but I've hit a wall as far as my understanding of Unity's Javascript minutiae.

The closest I have come is this below(grabbed from here: http://answers.unity3d.com/questions/184655/turn-on-gravity-on-a-single-gameobject-with-onmous.html )

But it actually makes the Button I have created FALL OFF THE WALL! It's quite hilarious, but not what I wanted.

 function OnMouseDown () {
     rigidbody.useGravity = true;
                                          }

So, I wonder the best solution here, to attach a modified version of this code to my cubes and create a script to trigger that script(still a little hazy on that) or if there is a simple and elegant way to do this. I've already looked at the API Ref and searched the forum/answers pretty solidly. I am either A.) Not understanding how to use these components(the API Documentation is quite stellar on some pages, but sadly provides fortune cookie minimalism on others!) or B.) Doing it all wrong.

Thanks very much!

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 whydoidoit · Aug 01, 2012 at 10:23 PM

You want to make an array of rigidbodies on your button then enable the gravity on all of them. Drag the falling things into the array using the inspector:

     var itemsThatWillFall : Rigidbody[];

     function Awake() {
         for(var body in itemsThatWillFall) {
              body.useGravity = false;
              body.isKinematic = true;
          }
      
     }

     function OnMouseDown() {
          for(var body in itemsThatWillFall) {
              body.useGravity = true;
              body.isKinematic = false;
          }
          
     }
Comment
Add comment · Show 2 · 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 Glark · Aug 01, 2012 at 11:00 PM 0
Share

Wow! THAT... works really well! Thank you! Just out of curiosity, is this type of array the standard way to activate things in a scene? Like triggering audio, starting animations, turning off components? I hadn't used it or seen much about it until now. Cheers!

avatar image whydoidoit · Aug 01, 2012 at 11:01 PM 0
Share

Yes. Use arrays if you know the items when you are designing the game and use List<SomeType> when you will add or remove them at runtime.

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

8 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Rigidbody and raycasting 6 Answers

Click on Object 2 Answers

Method for giving a ball momentum through a swipe 0 Answers

How can I turn on/off Rigidbody.useGravity? 0 Answers

OnMouseDown not firing if character isn't touching ground 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