Apr 302011
 

Hei jällegi.

 

EDIT: Lisan juurde ka YouTube video kus proovisin katsetada (must materjal). Ehk annab see võimalustest aimu.

Katsetasin siis lihtsat Tilemap’i, tegelast ja collision detectionit. Kõik toimis ilusti.

Õpin uut asja ja panen ühe jupi koodi ülesse sellele kellel iganes seda vaja peaks minema.

Kasutan Xcode 4 ja Cocos2D-iphone 1.midagi RC versiooni.

Cocos2D link!

 

Lühidalt oli vajadus mitme layeri järele. Ütleme siis, et mängulayer (gameLayer) ja juhtnuppude layer (HUDlayer).

 

Pika otsimise ja katsetamise peale õnnestus selline asi:

Minu GameScene.h fail:
#import “cocos2d.h”

#define KGameLayer 1
#define KHudLayer 2

@interface GameScene : CCScene{

}
@end

@interface GameLayer : CCLayer{

}

-(void) funktsioon;

@end

 

Minu GameScene.m fail:

#import “HUDLayer.h”

CCSprite *ikoon;

@implementation GameScene

- (id) init{

self = [super init];
if (self != nil){

GameLayer* gameLayer = [GameLayer node];
HUDLayer* hudLayer = [HUDLayer node];
hudLayer.gameLayer = gameLayer;
[self addChild:gameLayer z:0 tag:KGameLayer];
[self addChild:hudLayer z:1 tag:KHudLayer];

}
return self;
}

-(void)dealloc{

[super dealloc];
}

@end

@implementation GameLayer

-(id) init{

if((self = [super init])){

ikoon = [CCSprite spriteWithFile:@"Icon.png"];
ikoon.position = ccp(100, 100);
[self addChild:ikoon];

}
return self;
}

-(void) funktsioon{
[ikoon runAction: [CCMoveBy actionWithDuration:2 position:ccp(50,10)]];
NSLog(@”Nii, konsooli tuleb ka…”);
}

- (void) dealloc{

[super dealloc];
}

@end

 

Minu HUDlayer.h fail:

#import <Foundation/Foundation.h>
#import “cocos2d.h”
#import “GameScene.h”

@interface HUDLayer : CCLayer {

}

@property (readwrite,retain) GameLayer* gameLayer;

@end

 

Minu HUDlayer.m fail:

#import “HUDLayer.h”

@implementation HUDLayer
@synthesize gameLayer;

-(id) init{

if( (self=[super init] )) {

CCMenuItem *nupp = [CCMenuItemImage
itemFromNormalImage:@"icon.png" selectedImage:@"icon.png"
target:self selector:@selector(nupuvajutus:)];
nupp.position = ccp(60, 60);
CCMenu *menyy = [CCMenu menuWithItems:nupp, nil];
menyy.position = CGPointZero;
[self addChild:menyy z:2 tag:KHudLayer];

}
return self;
}

-(void) nupuvajutus:(id)sender {
[self.gameLayer funktsioon];
}

- (void) dealloc{

self.gameLayer = nil;
[super dealloc];
}
@end

Ja minu AppDelegate.m failis olev esimese stseeni koodirida:

Ülesse import nimekirja lõppu: #import “GameScene.h”

Siis leia ülesse:

[[CCDirector sharedDirector] runWithScene: [HelloWorldLayer scene]];

Ja muuda see selleks:

[[CCDirector sharedDirector] runWithScene: [GameScene node]];

/////////See on selgitus ja ei lähe koodi sisse///////////

Vaikimisi on seal [[CCDirector sharedDirector] runWithScene: [HelloWorldLayer scene]];

Vaja siis just muuta koodi viimaste kantsulgude sisu.

/////////selgituse lõpp/////////////////////

 

 

Mis ta siis teeb?

Käima pannes annab ta ette (praegu) 2 cocos2d ikooni. Vasakpoolne neist on nupp mis lihtsamini öeldes liigutab teist ikooni ettemääratud punktide järgi ja saadab konsooli rea, et tegevus õnnestus. Seda tegevust saaks teha  o l u l i s e l t  lihtsamini aga võib tekkida juhuseid kus vaja on asi lahendada niimoodi.

 

Ma ka veel ise õpin ja katsetan ja kui keegi märkab viga või oskab näpunäiteid jagada, siis seda saab teha näiteks twitteri kaudu.