Что является лучшим способом иметь SKSpriteNode
состоит из нескольких изображений?SKSpriteNode несколько текстур
Я обнаружил, что [SKTexture textureWithImage:image];
не использует свойство шкалы (когда я использую его с пользовательским растровым изображением, у меня есть маленький SKSpriteNode
).
Может быть, я могу создать ссылку между множителями SKSpriteNode
, но я не уверен, что это хорошая идея для обнаружения столкновений.
EDIT:
Решение, которое работает для меня.
Этот код принимает 3 текстуры, рисует их в GraphicsContext
, который создает UIImage
.
Затем я добавляю этот UIImage
в мой SKNode
, который теперь имеет несколько текстур. Тем не менее, это очень важно указать SKNode
размер свойства[self setSize:CGSizeMake(WIDTH_HERO, HEIGHT_HERO)];
в моем случае. Если вы этого не сделаете, узел будет использовать отрицательный масштабный коэффициент , и у вас будут небольшие текстуры (не сетчатка).
CGSize mergedSize = CGSizeMake(WIDTH_HERO, HEIGHT_HERO);
UIGraphicsBeginImageContextWithOptions(mergedSize, NO, 0.0f);
[textureImage1 drawInRect:CGRectMake(0, 0, WIDTH_HERO, textureImage1.size.height)];
[textureImage2 drawInRect:CGRectMake(0, 40, WIDTH_HERO, textureImage2.size.height)];
[textureImage3 drawInRect:CGRectMake(0, 0, WIDTH_HERO, textureImage3.size.height)];
UIImage *mergedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
[self setTexture:[SKTexture textureWithImage:mergedImage]];
вам нужно несколько спрайтов, поместите их в том же sknode и использовать accumulatedFrame столкновений – LearnCocos2D
Вы действительно должны использовать SKTexture создать узел спрайтов? –
Думаю, да. Даже если вы можете создать SKSpriteNode без явного указания текстуры, за ней стоит одна. –