Efficient way of detecting a touched object in a game?
        Posted  
        
            by 
                Pin
            
        on Game Development
        
        See other posts from Game Development
        
            or by Pin
        
        
        
        Published on 2011-07-28T23:04:48Z
        Indexed on 
            2012/11/03
            23:20 UTC
        
        
        Read the original article
        Hit count: 316
        
Imagine a Sims-like 2D game for a touch based mobile phone where one can interact with virtually any object in the scene.
How can I efficiently detect which object is being touched by the player?
In my short experience, looping through all the visible objects in the scene and checking if they're touched has so far done the job, but when there may be many many moving objects in the screen that sounds kind of inefficient isn't it? Keeping the visible moving objects list can consume time in itself as one may have to loop through all of them each frame.
Other solutions I've thought are:
Spatial hashing. Divide the screen as a grid and place the visible objects in the corresponding bucket. Detection of the clicked object is fast but there's additional overhead for placing the objects in the correct bucket each frame.
Maintaining a quad-tree. Moving objects have to be rearranged all the time, the previous solution looks better.
What is usually done in this case?
© Game Development or respective owner