级别 - Cocos2d

时间:2011-07-01 01:34:36

标签: iphone objective-c cocos2d-iphone

我有10个级别。就像普通游戏一样,除非你在它之前击败它,否则你无法进入下一关。每个级别上唯一改变的部分是一个精灵和精灵的位置。

如果你击败下一级解锁的等级,我怎么能这样做,然后区分你所在的等级并加载定义的“细节”(意味着精灵文件和位置)?

任何帮助都非常感谢!谢谢!

修改

我使用plist加载有关级别的所有信息

首先,我创建了PLIST(然后右键单击一个组,单击资源,“属性列表”)。接下来,我定义了PLIST中的所有信息。

然后,我设置一个全局变量来设置级别编号。当用户选择任何级别(CCMenu)时,该方法将int“级别”更改为正确的级别编号(例如1,2,3,4,5)。然后,在我的游戏init中,它检查int“级别”并从PLIST运行级别。

这是我的关卡方法,playcene init在关卡检查后运行。它加载PLIST,设置字典,选择背景,将其添加到图层,然后在.h文件中声明“_ballX,_ballY”,它设置位于init的球位置的值!

NSString *path = [[NSBundle mainBundle] bundlePath];
NSString *finalPath = [path stringByAppendingPathComponent:@"Levels.plist"];
NSDictionary *plistDataAll = [[NSDictionary dictionaryWithContentsOfFile:finalPath] retain];
NSDictionary *levelData = [NSDictionary dictionaryWithDictionary:[plistDataAll valueForKey:@"LevelOne"]];

NSString *background = [levelData objectForKey:@"LevelBackground"];

_m = [CCSprite spriteWithFile:background];
_m.anchorPoint = ccp(0, 0);
_m.position = ccp(0, 0);

[self addChild:_m];

_ballX = [[levelData valueForKey:@"BallPositionX"] intValue];
_ballY = [[levelData valueForKey:@"BallPositionY"] intValue];

希望这有助于某人!感谢大家的快速回复!

2 个答案:

答案 0 :(得分:3)

我处理它的方式基本上是一个抽象类,并在每个级别的单独类中实现这个抽象类,然后只要完成该级别,只需加载下一个类(级别)。

答案 1 :(得分:2)

让您的关卡类从某些数据文件(plist文件或xml或其他)加载该关卡的数据。然后,只要您想加载不同的级别,只需指向不同的数据文件即可。

对于解锁级别,只需创建一个级别数组以及级别选择类用于显示不同级别的锁定/解锁状态。在游戏之间,信息可以存储在另一个数据文件中(同样,plist文件或xml,甚至使用CoreData)。