Тут кто-нибудь занимался написанием сценариев? Типа если игрок подошёл к точке А, вызвать событие Б, а если он уже выполнил какое-то действие, то вместо события Б происходит событие В. Я долго мучался с рукописным программированием такового. Завёл енумы для состояний на уровне. Типа "Игрок_До_Подхода", "Игрок_После_Подхода", "Игрок_После_Действия_А", "Игрок_После_Действия_Б", и проверяю всё это на каждом объекте, с которым игрок взаимодействует.