Cocos2D iOS之旅:如何写一个敲地鼠游戏(六):放置地鼠
放置地鼠对于这个游戏,你将要在场景中添加3只地鼠 — 每个洞一只.地鼠一般躲在草丛中的洞里 — 但会偶尔弹出来,所以你可以狠K它们喽. 首先,让我们在每个洞里添加一只地鼠.我们将临时让它们出现在草丛上以便确保我们把它们放到了正确的位置上,一旦我们设置好其位置.我们将把它们放到洞里面去. 打开HelloWorldLayer.h添加一个在关卡中保持地鼠的数组,如下所示: // Inside @interface HelloWorld
NSMutableArray *moles;
将地鼠存储在数组中,可以让我们在之后遍历它们更加容易. 接下来,在你的init方法的末尾(在”Add more here later…”的位置)放置以下代码: // Load sprites
CCSpriteBatchNode *spriteNode = [CCSpriteBatchNode batchNodeWithFile:sSheet];
[self addChild:spriteNode z:999];
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:sPlist];
moles = [[NSMutableArray alloc] init];
CCSprite *mole1 = [CCSprite spriteWithSpriteFrameName:@"mole_1.png"];
mole1.position = [self convertPoint:ccp(85,85)];
[spriteNode addChild:mole1];
[moles addObject:mole1];
CCSprite *mole2 = [CCSprite spriteWithSpriteFrameName:@"mole_1.png"];
mole2.position = [self convertPoint:ccp(240,85)];
[spriteNode addChild:mole2];
[moles addObject:mole2];
CCSprite *mole3 = [CCSprite spriteWithSpriteFrameName:@"mole_1.png"];
mole3.position = [self convertPoint:ccp(395,85)];
[spriteNode addChild:mole3];
[moles addObject:mole3];
以上代码首先为每个精灵创建了一个CCSpriteBatchNode,所以我们可以绘制3个地鼠更加有效率,然后把该节点作为子节点添加到层中.注意它的z序被临时设置为999.这样可以方便清楚的确认地鼠摆放的位置. 然后代码从属性列表中加载所有精灵帧到内存中来,以便后面快速的取出. 接下来为每个洞创建一只地鼠,把它们放置在场景中,同时将它们添加到moles列表中.注意每一只地鼠的坐标系都在480x320的”可玩区域”之中(iPhone的大小).对于ipad来说.这些点的位置将被convertPoint方法转换,如下所示: - (CGPoint)convertPoint:(CGPoint)point {
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
return ccp(32 + point.x*2,64 + point.y*2);
} else {
return point;
}
}
该方法将”可玩区域”中的点转换到ipad屏幕中的合适位置,记住:
说白了,该方法只是用简单的算法将给定点转换到ipad上去. 还有一件事 — 在我们忘记以前,将如下清理内存的代码添加到dealloc方法中(在开启ARC的代码中,可以无视.猫猪注.): [moles release];
moles = nil;
编译运行你的代码,你应该看到3只地鼠愉快的出现在场景正确的位置上!你同样应该在不同设备上都试试,确保他们的位置都正确. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |