Optimizing a function with nested loops and if condition
Disclaimer: I have not tested any of these optimizations. Some of these optimizations could potentially even harm the speed - or they could already be covered by the JVM. Do your own benchmarking.

Helping the Compiler/JVM
If you don't need to override this method, declare it final. The compiler might inline the method if it thinks it helps. Additionally, declare constants as final - such as numTiles.

Preventing repeated lookups
You need to access x[i], tilecoords[j], z[i] and such multiple times. Consider storing those in temporary variables. Don't forget to test to see if it is actually faster to do so. An example (with really bad variable names - you might want to pick better names than xi and zi

for(int i=0;i&lt;nRigidBodies;i++)
{
    // Check for the loaction of each tile to find which one should be switched on...
    //currently only supports 4
    float xi = x[i];
    float zi = z[i];
    for(int j=0;j&lt;numTiles;j++)
    {
        if ((xi &gt; tileCoords[j][0]) &amp;&amp; (xi &lt; tileCoords[j][1]) &amp;&amp; (zi &gt; tileCoords[j][2]) &amp;&amp; (zi &lt; tileCoords[j][3]))
        {
            serial[i]=j+1;
            break;
        }
    }
}


Fixing bugs
int serial[]=new int[nRigidBodies]; creates a new int array with a size of nRigidBodies. int's default value is 0. Thus, the entire array will be filled with 0. Given that your innerloop starts at index 0 and sets the "found" index into the array, it's possible it's setting 0 over the default value. That's not so important. What is important is the reverse implication: If the serial array contains a 0 at a given index, you do not know whether this is because no tile-index was found, or because the tile-index that was found was the first one.