Can you post a capx. Generally this happens if you have your conditions set backwards but, with the Touch object, it should only happen with the object being touched. It might be how you have constructed your condition.
Alternatively here's a solution.
Create an instance variable (text) within the cake object called Actions
Create a condition:
Cake > Actions = "Destroy_Cake" >> Cake>Destroy
On Object Touched> Cake>> Set Actions>"Destroy_Cake"
Only the cake touched will have the value changed and be destroyed