Cocos2d, странное смещение положения при использовании CCParallaxNode - PullRequest
0 голосов
/ 13 февраля 2012

Я использую cocos2d для iOS. Не уверен, что я делаю что-то не так или CCParallaxNode делает что-то странное, чего я просто не понимаю.

Я пытаюсь создать несколько слоев прокрутки параллакса на заднем плане моей игры, в настоящий момент я просто добавляю один слой к узлу параллакса, пока не смогу понять, что происходит не так. Когда игра загружает слой, он всегда смещается вниз и влево примерно на 30% от размера изображения. Я загрузил изображение, демонстрирующее разницу в положении здесь http://oi42.tinypic.com/29dz1av.jpg.

Вот мой код:

background = [CCParallaxNode node];
background.anchorPoint = ccp(0,0);
background.position = ccp(0,0);
[self addChild: background];

background_image = [CCSprite spriteWithFile: @"layer01.png"
                                      rect: CGRectMake(0, 0, 100, 100)];
background_image.anchorPoint = ccp(0,0);
background_image.position = ccp(0,0);

[background addChild: background_image z:0 parallaxRatio: ccp(0,0) positionOffset:ccp(0,0)];

Значок cocos2d прикреплен к тому же слою, что и узел параллакса, а его положение и точка привязки установлены в 0,0, поэтому нижний левый угол значка должен находиться в том же месте, что и нижний левый угол синего фонового изображения. .

Я проверил это, используя базовый спрайт вместо узла параллакса, и все выстраивается в линию так, как должно, поэтому это не само изображение.

Любая помощь с этим будет оценена.

Ответы [ 2 ]

0 голосов
/ 27 апреля 2012

Во-первых, я не предлагаю вам устанавливать узел параллакса и его точку привязки и положение непосредственно, потому что это приведет к неожиданным результатам.Вы должны добавить узел параллакса в слой как его дочерний элемент и установить опорную точку и положение слоя, чтобы разместить ваш параллакс.

Во-вторых, CCParallaxNode также предоставляет positionOffset, что вы можете поместить свое изображение в параллакс впервый.Это может помочь, если вы хотите выровнять несколько слоев центра просмотра изображений.

Так что я думаю, что вы должны сделать что-то вроде этого (Так как я использую cocos2d-x, я не уверен, что это правильно с obj-C):

layer = [[CCLayer alloc]init];
background = [CCParallaxNode node];
[layer addChild: background];
[self addChild: layer];

Тогда вам просто нужно добавить спрайт изображения в background и установить положение и точку привязки слоя.

Надеюсь, это поможет.

0 голосов
/ 13 февраля 2012
  1. Убедитесь, что размер фонового изображения составляет 480x320.

  2. Почему вы написали CGRectMake(0, 0, 100, 100)?Почему 100 и 100?Вы ограничиваете свой CGRect, это, вероятно, неправильно ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...