2014-02-19 5 views
1

У меня есть SKSpriteNode с изображением SKTexture. Я установил centerRect моего узла на то, что я бы сказал, чтобы он растянулся вверх, чтобы стрелка не искажалась. Изображение 190x190 px и я устанавливаю мой centerRect как таковой:Растяжка SKSpriteNodes

CGRectMake(90/190, 90/190, 5/190, 5/190); 

Из моего понять из docs, это говорит, что каждый угол 90x90 px, а центр Прямоугольник на 3х3 есть 5x5 px. Это означало бы растяжение только 5x5 пикселей.

Но мой результат:

enter image description here

У меня есть класс, называемый Obstacle, который является подклассом SKSpriteNode и когда он инициализируется, она проходит в CGRect выше наряду с именем изображения в этой метод:

-(void)setTextureNamed:(NSString*)imageName centerRect:(CGRect)rect 
{ 
// set texture for sprite 
UIImage* image = [UIImage imageNamed: imageName]; 

SKTexture* texture = [SKTexture textureWithImage: image]; 
[self setTexture: texture]; 

// make stretchable 
self.centerRect = rect; 

[self setSize: texture.size]; 
} 

И в моем SKScene, когда Obstacle добавляется этот код называется:

int bottomHeight, topHeight, topY, bottomY, max; 
bottomY = 0;//_floor.size.height/2; 
max = self.view.frame.size.height - _floor.size.height/2 - 2*OBSTACLE_PADDING - 2*OBSTACLE_MIN_HEIGHT; 
bottomHeight = arc4random() % max + OBSTACLE_MIN_HEIGHT; 
topY = bottomHeight + OBSTACLE_PADDING + _floor.size.height; 
topHeight = self.view.frame.size.height - topY; 

bottomY += bottomHeight/2; 
topY += topHeight/2; 

Obstacle *bottom = [[Obstacle alloc] initWithHeight: bottomHeight flipped: NO]; 
bottom.zPosition = 0; 
[bottom setPosition: CGPointMake(400, bottomY)]; 

NSArray* objs = @[bottom, top]; 

for (Obstacle* o in objs) 
{ 
    o.zPosition = 2; 
    [self addChild: o]; 
    [o runAction: [SKAction 
         moveToX: -100 duration: SPAWN_SPEED*2] 
      completion:^{ 
       [o removeFromParent]; 
      }]; 

} 
+0

Я думаю, это связано с тем, как вы представляете SKView для просмотра UIViewController в viewDidLoad. Но кто знает? У нас мало информации. –

+2

Опубликовать больше кода, а не описывать, что вы пытаетесь сделать –

+0

@AndreyGordeev Извините, я поставил еще несколько блоков кода, которые отвечают за создание объектов – Chris

ответ

0

Установите масштаб SKSpriteNode, а не размер. [self setScale: ...]

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