Put the origin point at a tip of the triangle.
For each hexagon x/y
Repeat 6 times - Spawn triangle at x/y, rotate loopindex*60 degrees.
To get a random color for each triangle, assuming you are using a single object with different animation frames, add an action to set animation frame to floor(random(6)).
To get a non-repeating random color for each triangle, create an array size 0,1,1.
Step 1 - Populate the array
Repeat 6 times - Array Push Back loopindex
Step 2 - Pick a number out of the array out of the remaining available numbers (use a variable)
Set PickedIndexVariable to floor(random(array.width))
Step 3 - Apply the picked number
Set triangle animation frame to Array.At(PickedIndexVariable)
Step 4 - Delete the picked index so it can't be picked again
Array delete index at PickedIndexVariable
Repeat steps 2-4 until all numbers are picked
Repeat step 1 for next set of triangles.
Repopulate array