The indexes should just stay between 0 and 3
byte packetArray[12] = {
((uint8_t*)&value1)[0],
((uint8_t*)&value1)[1],
((uint8_t*)&value1)[2],
((uint8_t*)&value1)[3],
((uint8_t*)&value2)[0],
((uint8_t*)&value2)[1],
((uint8_t*)&value2)[2],
((uint8_t*)&value2)[3],
((uint8_t*)&value3)[0],
((uint8_t*)&value3)[1],
((uint8_t*)&value3)[2],
((uint8_t*)&value3)[3],
};
As you get access to the bytes from each float in memory.
Having the 3 floats in a structure and sending the structure would make it easier…