• 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
Question by michael 4 · Sep 20, 2011 at 03:07 PM · rts

selecting objects inside a box part2

I want to select all the objects inside of a RTS style selection box.

Since I have originalmousePosition and currentMousePosition, Im looping though all the units and converting there coordinates to screen coordinates. From there Im testing weather the screen coordinates are located inside the box I drew. If the units are inside the box, it selects them.

I believe my code is "generally" right, but I dont think i have my bounds set up to represent the area inside the box. Any help please?

 public static void selectMultipleObjects(Vector2 originalPos, Vector2 currentPos)
 {
     foreach(GameObject go in movableObjectsList) //represents all the movable units
     {
         var screenCoordinates = Camera.main.WorldToScreenPoint(go.transform.position);//convert the current object position to screen coordinates
         
         //Find all the objects inside the box
         if((screenCoordinates.x < originalPos.x && screenCoordinates.x > currentPos.x) && (screenCoordinates.y > originalPos.y && screenCoordinates.y < currentPos.y))
         {
             if(!DoesObjectExistInList(movableObjectsList, go))
             {
                 SelectedObjects.Add(go);
             }
         }
     }
 }
Comment

People who like this

0 Show 0
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

2 Replies

· Add your reply
  • Sort: 
avatar image
Best Answer

Answer by kevork · Sep 20, 2011 at 03:41 PM

Unity has support for boxes with Rect. Assuming originalPos and currentPos are the corners of your selection box, you can build your box with:

 Rect selectionBox = new Rect(Mathf.Min(originalPos.x, currentPos.x)), Mathf.Min(originalPos.y, currentPos.y),
                              Mathf.Abs(originalPos.x - currentPos.x),
                              Mathf.Abs(originalPos.y - currentPos.y));

Then you can replace your if statement with:

 if(selectionBox.Contains(screenCoordinates))

And you should be good to go.

Comment
michael 4
nuverian
Numior

People who like this

3 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 michael 4 · Sep 20, 2011 at 04:02 PM 0
Share

Perfect!!!

avatar image

Answer by dragologic · Oct 28, 2012 at 05:11 PM

I think y should be inverted like this: Rect selectionBox = new Rect(Mathf.Min(originalPos.x, currentPos.x)),
Screen.height - Mathf.Max(originalPos.y, currentPos.y), Mathf.Abs(originalPos.x - currentPos.x), Mathf.Abs(originalPos.y - currentPos.y));

Comment

People who like this

0 Show 0 · 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

4 People are following this question.

avatar image avatar image avatar image avatar image

Related Questions

RTS/MOBA movement script error,Error in RTS/moba movement script 0 Answers

How to show render texture in a 2D game (Fog of War). 1 Answer

Math/Programming Question 4 Answers

Roll based on turning speed 1 Answer

Aggro behavior for RTS game 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