Создание атрибутов указателя в cocos2d iPhone - PullRequest
1 голос
/ 31 января 2011

Я работаю над игрой.Есть шары, которые падают с верхней части экрана, и игрок должен поймать их, поскольку они пойманы, они складываются друг на друга.У меня есть метод, который создает каждый новый шар и добавляет его в массив, который я использую для перемещения спрайтов.Проблема в том, что после того, как они сталкиваются, мне нужно, чтобы они перестали двигаться, так как массив вызывается для их перемещения, все они перемещаются.И если я пытаюсь заставить их остановиться, они все останавливаются.Поэтому я надеялся создать атрибут указателя, если есть такое мнение, например, «sprite.position», мне нужен новый атрибут, который я могу проверить, как логическое значение.Я надеялся создать такой атрибут, как sprite.hasCollided, и если он возвращает YES, то шар больше не должен двигаться.Это возможно или есть лучший способ сделать это?

Спасибо, Таннер

Ответы [ 2 ]

1 голос
/ 31 января 2011

Я бы предложил вам создать объект шара. И добавьте логическое значение как часть объекта.

0 голосов
/ 31 января 2011

CCNodes (и, по наследству, CCSprites) имеют свойство userData, которое является пустым *.Вы можете использовать это, чтобы связать пользовательский объект с объектом cocos2d.Имейте в виду, что если вы используете опцию userData, вам в большинстве случаев потребуется выделять любую память при создании / назначении спрайта и освобождать ее, когда вы закончите.

int* myInt = (int*)malloc(sizeof(int));
*myInt = 0;
sprite.userData = myInt;

//some time later, when you are done with the sprite
free(sprite.userData);

В качестве улучшения свойства userData вы можете сделать то, что предлагает xuanweng, и создать объект шара, содержащий различные игровые свойства для шаров, и назначить экземпляр этого для каждого из ваших CCSprites вашего шараиспользуя метод выше.

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