Хорошо, это то, что я мог бы придумать, которое должно воплощать то, что вы пытаетесь сделать:
public class CollisionSystem
{
Public void HandleCollision(IGameObject[] objects)
{
foreach (IGameObject obj in objects)
{
//call the function that tells the object it collided
obj.CollisionDetected()
}
}
}
Вы захотите, чтобы ваши игровые объекты реализовали интерфейс
public interface IGameObject
{
public void CollisionDetected()
}
Что означает, что ваш класс gameobject выглядит следующим образом:
public class GameObject : IGameObject
{
//constructors, params, whatever
public void CollisionDetected()
{
//play some sound, remove object, whatever
}
}
Дело в том,Я не знаю, что вызывает ваше столкновение-событие.
Редактировать: , поэтому я перечитал ваш вопрос и увидел, что вы упомянули, что его начали вызывать из физического движка.Где бы / как бы это ни было, если ваш CollisionSystem
объявлен внутри класса физического движка, вы можете вызвать HandleCollision()
-метод оттуда, и вы будете в полном круге.