В моей игре cocos2d у меня есть своего рода «усиление», когда после достижения персонаж становится синим, платформа становится синей, как и фон. Я не уверен, что реализую это наилучшим образом, поэтому, если у вас есть другие предложения, поделитесь! :)
Я создал класс Blue с переменной экземпляра blueCalled.
Я импортировал этот класс как в свой класс «Платформа», так и в класс «Игрок».
Код блокировки бонусов и игроков находится внутри моего класса Platform. Это код при нажатии на бонусы:
// try remove powerup
- (void) tryRemovePowerup
{
NSMutableArray * currentPowerUpArray = [self getcurrentPowersArr];
if(currentPowerUpArray)
{
int playerY = ((CCLayer*)(self.player)).position.y;
for(int x=0; x<[currentPowerUpArray count];x++)
{
CCSprite *powerup = [currentPowerUpArray objectAtIndex:x];
if(abs(powerup.position.x+powerup.parent.position.x-[Player initX])<50)
{
if(abs(powerup.position.y+blueberry.parent.position.y-playerY)<30 && powerup.visible && powerup.visible)
{
[power.parent powerup cleanup:YES];
CGSize winSize = [[CCDirector sharedDirector] winSize];
[[SimpleAudioEngine sharedEngine] playEffect:@"yay.wav" pitch:1 pan:0 gain:1];
// THIS IS WHERE ALL OF EFFECTS SHOULD HAPPEN
NSLog(@"powerup hit");
}
}
}
}
[self hitTestOB];
}
Место // ЭТО ГДЕ ДОЛЖНЫ ПРОИЗВОДИТЬСЯ ВСЕ ЭФФЕКТЫ - это то место, где я хочу сделать все синим. Прямо сейчас я планирую сделать это, установив для переменной экземпляра в классе Blue значение YES.
В методах, которые обрабатывают 1. кадры основного проигрывателя, 2. фон и 3. платформенные кадры, у меня есть оператор if, проверяющий, имеет ли переменная экземпляра класса Blue значение YES или NO, и он действует соответственно. Однако я не знаю, как использовать переменную экземпляра из класса Blue в моей платформе и классе игрока, а также я не уверен на 100%, что это лучший способ реализовать усиление.
Спасибо за любую помощь, которую вы можете мне оказать :)
Перейти на iOS!