• 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
1
Question by RoloJo · Aug 04, 2013 at 02:39 PM · onmousedown

Is there something like OnMouseDown which doesn't require a collider on my prefab?

I have a world with plants trees etc. I want to be able to remove them by clicking on them first and then hitting 'e'. Currently it works but only if I have a collider on my GameObject. As I have read in the scripting reference OnMouseDown is only applicable to colliders and GUIElements.

Is there a simple way to do the same thing without having the collider. I dont want the collider on all objects (such as grass) as a player must be able to walk through it also.

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

3 Replies

· Add your reply
  • Sort: 
avatar image
1

Answer by aldonaletto · Aug 04, 2013 at 03:00 PM

No (simple) way! Raycast (used internally to generate mouse events) is actually performed as a spatial search in the collider database generated each scene by the physics engine. You could create one Rect (in screen space) for each object and use Rect.Contains to know whether the mouse pointer is over some rect, but all rects should be recalculated each time the camera changed.

But you may add colliders to anything you want, and still walk through them: just set Is Trigger - triggers work for OnMouseDown events but don't constrain movements.

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 RoloJo · Aug 04, 2013 at 06:19 PM 0
Share

"Is Trigger" does exactly what I need. Cheers!

avatar image
0

Answer by ryisnelly · Aug 04, 2013 at 02:53 PM

im not to sure there is another way i might be completely wrong, check this link out

http://docs.unity3d.com/Documentation/ScriptReference/Collider.html

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
avatar image
0

Answer by RalphTrickey · Aug 04, 2013 at 03:14 PM

I've got a 2D game, I use code like this. I then raycast to a plane to find the point on the plane they touched instead of having many colliders.

For a 3D game, you might be able to turn on the colliders, then do a raycast, then turn them back off or something like that, but I haven't tried it.

Ralph

http://docs.unity3d.com/Documentation/ScriptReference/Input.GetMouseButton.html

     public void Update() {
         if (Input.GetMouseButton(0) && Input.touchCount == 0) {// && Time.time > Timer) {
             cameraController.ShouldMove(!button0Down, Input.mousePosition); //Input.mousePosition);
             button0Down = true;
         } else  if (Input.touchCount == 1) {// && Time.time > Timer) {t
             cameraController.ShouldMove(!button0Down, Input.touches[0].position); //Input.mousePosition);
             button0Down = true;
         } else {
             if (button0Down)
                 button0Down = false;
         }
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

17 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 avatar image

Related Questions

OnMouseDown with 360 controller unity? 1 Answer

GameObject Array 1 Answer

Increase mouseclick area size for OnMouseDown() - For Mouse Shooting Game (Open to more ideas) 2 Answers

Click on a gameObject to show/hide a GUI box help C# 1 Answer

How to apply OnMouseDown on sprites according to z position... 3 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