Как обнаружить столкновение и как на него реагировать - это две совершенно разные проблемы, и вы должны разделить их.
Самый простой способ - использовать виртуальный метод в объекте базовой игры, реагирующий на столкновения:
class GameObject
{
virtual protected void OnCollision(GameObject withObject) { }
}
В вашей системе обнаружения столкновений, когда сталкиваются два объекта, просто создайте событие столкновения для двух объектов: object1.OnCollision(object2);
и object2.OnCollision(object1)
.
Вскоре вы поймете, что в какой-то момент это может стать беспорядком, и вам захочется узнать о множественной рассылке и о том, как эмулировать ее на языках, которые ее не поддерживают.