- Home /
RTS style selection
How do I perform RTS style selection like with a rectangle?
Answer by Jesse Anders · Oct 27, 2010 at 01:34 AM
I would imagine there would be some information or examples on this floating around somewhere, but a quick Google search didn't turn up much.
Maybe someone else will provide a link or two, but meanwhile, there's (at least) a couple of ways you can go about this: you can perform the selection in screen space, or you can perform the selection in world space.
In both cases, you'll need to keep track of the mouse position and whether the mouse button is currently down. When the mouse button is pressed, record the current mouse position; while the mouse button is pressed, update a 'selection rectangle' formed from the 'anchor' position and the current mouse position; and when the mouse button is release, end the selection process.
Selecting in screen space would probably be the easier of the two methods I mentioned. You would need to transform the positions of the objects in question from world space to screen space (e.g. using Camera.WorldToScreenPoint()), and then test them for inclusion in the selection rect.
If you want greater accuracy, you could make an estimate of each object's screen-space extent and represent the objects using a circle or rectangle for the purpose of the selection test.
The second method would involve building a frustum from the screen space selection rect and performing the selection test in world space (this is how I've done it in the past, and is probably the way I'd go).
Both methods will most likely be sensitive to the number of objects being tested against, so if you have many objects that can be selected (e.g. hundreds), you might need to optimize the process (e.g. by leveraging the physics system to identity potentially selectable objects).
Your answer
Follow this Question
Related Questions
Selection and Deselection 1 Answer
How to add gameobject inside of an array? 0 Answers
Raycast needs to hit GUI 3 Answers
fog of war/detecting exposed entities 1 Answer
rts building placement 1 Answer