Куда должны идти текущие расчеты по времени в cocos2D? - PullRequest
2 голосов
/ 18 мая 2011

Я хочу постоянно продвигать экран (движущийся уровень) и плохо парни появляются и атакуют из разных стороны игрока спрайт. Это будет требуют постоянной модификации Значения объектов на слое как а также создание и уничтожение их.

Существует AppDelegate, он запускает CCDirector для сцены HelloWorldLayer.

HellowWorldLayer.m создает другие отображаемые объекты, такие как текстуры и спрайты.

Теперь я должен добавить логику в HelloWorldLayer, чтобы отслеживать вещи и генерировать / перемещать монстров, отслеживать дневные и ночные триггеры? Или я должен создать другой объект?

Может ли объект, принадлежащий HelloWorldLayer, получить доступ к родительскому объекту HelloWorldLayer, изменить отображаемые объекты и прочитать их?

Должен ли я создать новый объект, который обрабатывает это вне HelloWorldLayer, и создать его экземпляр? Если да, сможет ли он иметь доступ к HelloWorldLayer?

Внутри HelloWorldLayer есть метод init (), который создает все, но я сомневаюсь, что мне следует поместить туда логику.

TL; RD: В какой объект я должен поместить логический код «игрового цикла»?

1 Ответ

1 голос
/ 19 мая 2011

Я поместил свой код игрового цикла в объект CCScene, который является родителем вашего HelloWorldLayer.

Сначала у меня был игровой цикл внутри основной игры CCLayer, но когда я начал добавлять все больше и больше слоев, пытаясь перемещать объекты из игрового слоя в другие слои, такие как слой пользовательского интерфейса, он стал запутанный.

Кажется, это намного чище, поскольку я переместил его в CCScene, который теперь также обрабатывает любые общие зависимости между различными слоями.

Я также решил поместить его в CCScene, в отличие от совершенно нового класса для этой цели, потому что я все еще хотел иметь возможность использовать планировщик cocos2d для запуска каждой итерации цикла ... так как CCScene - это всего лишь CCNode, у него есть доступ к этому планировщику.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...