Масштабирование и прокрутка в SpriteKit
Я новичок в SpriteKit. Мне нужно отобразить изображение через UIImageView ИЛИ SpriteNode (это фоновое изображение для игры). Тем не менее, мне нужно, чтобы пользователь мог увеличивать фон и перемещаться. Я сделал это легко, не используя SpriteKit, но не могу понять, как заставить узел принимать масштабирование и панорамирование. Если я использую UIScrollView в раскадровке, все спрайты, добавленные в мою сцену, нене станут детьми и не будут изменять масштаб или панорамирование.
Возможно ли это и можете ли вы указать мне правильное направление?
EDIT: Я
Я немного смущен вашим ответом, но здесьЧто я сделал:
В моем корневом представлении контроллер .m:
- (void)viewDidLoad
{
[super viewDidLoad];
SKView * showDesigner = (SKView *)self.view;
SKScene * scene = [iMarchMyScene sceneWithSize:showDesigner.bounds.size];
scene.scaleMode = SKSceneScaleModeAspectFill;
[showDesigner presentScene:scene];
}
В моей сцене .m: (ваши шаги прокомментированы)
-(id)initWithSize:(CGSize)size {
if (self = [super initWithSize:size]) {
//create SKView (step 1)
SKView *skview_field = [[SKView alloc]initWithFrame:(CGRectMake(0, 0, size.width, size.height))];
//create UIScrollView with same dimensions as your SpriteKit view (step 2)
UIScrollView* uiscrollview_field = [[UIScrollView alloc]initWithFrame:skview_field.frame];
//initialize the field (field is the game's background node)
SKSpriteNode *field = [SKSpriteNode spriteNodeWithImageNamed:@"Field"];
field.position = CGPointMake(CGRectGetMidX(self.frame), (CGRectGetMidY(self.frame)));
field.size = CGSizeMake(self.size.width, self.size.height / 3);
//create a UIView (called scrollViewContent) with dimensions of background node (step 3)
UIView* scrollViewContent = [[UIView alloc]initWithFrame:field.frame];
//set UIScrollView contentSize with same dimensions as your scrollViewContent and add a scrollContentview as your UISCrollView subview (step 4)
[uiscrollview_field setContentSize:(CGSizeMake(scrollViewContent.frame.size.width, scrollViewContent.frame.size.height))];
scrollViewContent.frame = field.frame;
[uiscrollview_field addSubview:scrollViewContent];
//[self addChild:field]; -- my original code
//.....does a bunch of other inits
return self;
}
И здесь'Там, где я заблудился: Шаг 5: Теперь в вашем корневом представлении добавьте SKView и UIScrollView поверх SKView.
Если я вас правильно понял, мне нужно перейти к myRootViewController.m и в метод viewDidLoad добавить SKView и UIScrollView (которые инициализируются в myScene.m) как подпредставления для SKView, инициализированные здесь в методе viewDidLoad? Я нене вижу, как сделать эту часть.