2015-08-10 3 views
0

Я создаю виртуальный геймпад для своей игры. Он имеет один основной SKSpriteNode с изображением круга и четырьмя дочерними узлами (вверх, вниз, влево, вправо) с изображением. Когда я использую размер по умолчанию для всех, он выглядит идеально, но он большой по размеру, и когда я пытался изменить размер основного круга SKSpriteNode, все его дочерние узлы больше, чем родительские, и я не могу рассчитать размер для дочернего узла, который будет соответствовать каждому условие (разный размер главного узла).Как изменить размер дочернего узла в SKSpriteNode при изменении размера?

-(id)initWithJoystickImage:(NSString *)baseImage 
        upImage:(NSString *)upImage downImage:(NSString *)downImage leftImage:(NSString *)leftImage rightImage:(NSString *)rightImage 
{ 
    if((self = [super initWithImageNamed:baseImage])) 
    { 
     SKSpriteNode *up = [[SKSpriteNode alloc] initWithImageNamed:upImage]; 
     up.position = CGPointMake(0, up.frame.size.height/2); 
     [self addChild:up]; 

     SKSpriteNode *down = [[SKSpriteNode alloc] initWithImageNamed:downImage]; 
     down.position = CGPointMake(0, -down.frame.size.height/2); 
     [self addChild:down]; 

     SKSpriteNode *right = [[SKSpriteNode alloc] initWithImageNamed:rightImage]; 
     right.position = CGPointMake(right.frame.size.width/2, 0); 
self.size.height/2.5); 
     [self addChild:right]; 

     SKSpriteNode *left = [[SKSpriteNode alloc] initWithImageNamed:leftImage]; 
     left.position = CGPointMake(-left.frame.size.width/2, 0); 
self.size.height/2.5); 
     [self addChild:left]; 
    } 
    return self; 
} 

Default size

При использовании размер

When resize

по умолчанию, когда изменение размера в зависимости от размера устройства

Edit 1: добавление джойстика и размер кода

Joystick *joystick = [[Joystick alloc] initWithJoystickImage:@"cricle.png" upImage:@"up.png" downImage:@"down.png" leftImage:@"left.png" rightImage:@"right.png"]; 
    joystick.size=CGSizeMake(DeviceHeight/3, DeviceHeight/3); 
    joystick.position=CGPointMake(DeviceWidth/2-joystick.frame.size.width/2, -DeviceHeight/2+joystick.frame.size.height/2); 
+0

Как изменить размер узла? '[SKAction scaleTo]'? – WangYudong

+0

обновленный вопрос –

ответ

2

Вы изменяете размер основного узла (joystick). Это приведет к изменению размера родительского и дочернего узлов:

[joystick runAction:[SKAction scaleTo:2.0/3.0 duration:0.0]]; // Change scale value 
+0

'scaleTo: 2/3' не работает, но' scaleTo: .5' действительно работал, но при масштабировании его позиции тоже меняется, я не хочу этого –

+0

@VarunNaharia Моя ошибка, масштаб должен быть плавающим номер. Вы изменили опорную точку джойстика? Если опорная точка (0,5, 0,5), она будет масштабироваться от центра, поэтому положение не будет изменено. – WangYudong

Смежные вопросы