2D система разрешения столкновений - PullRequest
1 голос
/ 05 декабря 2011

Я делаю простую 2D-игру в консоли на C # в качестве учебного проекта. Однако мне кажется, что я не могу придумать приличный дизайн для системы столкновений.

Разрешение столкновения представляет для меня самую большую проблему.

В принципе может быть любая комбинация из следующих 2 наборов эффектов:
1. Триггерный объект или плитка удалены;
2. Удаленный объект или плитка удалены;
Или же ничего не может произойти - объекты просто перестают двигаться (т.е. когда оба неуязвимы или что-то в этом роде).

Любые идеи относительно этого эффекта будут с благодарностью.

1 Ответ

1 голос
/ 05 декабря 2011

Как обнаружить столкновение и как на него реагировать - это две совершенно разные проблемы, и вы должны разделить их.

Самый простой способ - использовать виртуальный метод в объекте базовой игры, реагирующий на столкновения:

class GameObject
{
    virtual protected void OnCollision(GameObject withObject) { }
}

В вашей системе обнаружения столкновений, когда сталкиваются два объекта, просто создайте событие столкновения для двух объектов: object1.OnCollision(object2); и object2.OnCollision(object1).

Вскоре вы поймете, что в какой-то момент это может стать беспорядком, и вам захочется узнать о множественной рассылке и о том, как эмулировать ее на языках, которые ее не поддерживают.

...