在我的 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];
}
// THIS IS WHERE ALL OF EFFECTS SHOULD 的地方是我想让所有东西都变成蓝色的地方。现在,我计划通过将 Blue 类中的实例变量设置为 YES 来做到这一点。
在处理主要播放器的 1. 帧、2. 背景和 3. 平台帧的方法中,我有一个 if 语句检查 Blue 类的实例变量是 YES 还是 NO 并相应地执行。但是,我不知道如何在我的平台和播放器类中使用 Blue 类中的实例变量,而且我也不是 100% 确信这是实现通电的最佳方式。
感谢您为我提供的任何帮助:)
去iOS!