この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
前回の続きです。
キャラを表示して初期配置の処理まで作ります。
キャラクターを配置する
ペンギン2羽とランデブー時の画像を追加します。
キャラクターを画面に追加します。
追加したらノードの Name に名前をセットしておきます。
キャラクターを初期位置に配置します。ランデブー時の画像は非表示にしておきます。
GameScene.m
#import "GameScene.h"
@implementation GameScene {
SKTileMapNode *_tileMap;
SKSpriteNode *_emperor;
SKSpriteNode *_gentoo;
SKSpriteNode *_rendezvous;
CGPoint _emperorIndex;
CGPoint _gentooIndex;
}
- (void)didMoveToView:(SKView *)view {
_tileMap = (SKTileMapNode *)[self childNodeWithName:@"tileMap"];
_emperor = (SKSpriteNode *)[self childNodeWithName:@"emperor"];
_gentoo = (SKSpriteNode *)[self childNodeWithName:@"gentoo"];
_rendezvous = (SKSpriteNode *)[self childNodeWithName:@"rendezvous"];
// エンペラーペンギンとジェンツーペンギンの座標をセット
_emperorIndex = CGPointMake(5, 10);
_gentooIndex = CGPointMake(8, 7);
_emperor.position = [self convertPlayerPoint:_emperorIndex];
_gentoo.position = [self convertPlayerPoint:_gentooIndex];
// ランデブー画像の座標セットと非表示
_rendezvous.position = _gentoo.position;
_rendezvous.hidden = YES;
}
-(CGPoint)convertPlayerPoint:(CGPoint)tileMapIndex {
CGPoint playerPoint = [_tileMap centerOfTileAtColumn:tileMapIndex.x
row:tileMapIndex.y];
return [_tileMap convertPoint:playerPoint
toNode:_emperor.parent];
}
- (void)swipe:(CMSSwipe)swipe {
// ここにフリック処理
}
@end
SKTileMapNode の centerOfTileAtColumn:row: メソッドでタイルの座標を取得することができます。
今回はここまで。
ではでは。