Простое позиционирование элемента в задаче C - PullRequest
0 голосов
/ 29 июня 2011

Это одно из моих первых начинаний в мире разработки для iOS.Я пытаюсь сделать простое приложение, в котором большой шар толкает маленький шарик.Я читал пару учебных пособий, и я застрял в самом первом месте.Пожалуйста, дайте мне знать, если я делаю что-то сумасшедшее (что я, вероятно, и есть).Любые предложения будут оценены по достоинству.Следующий код находится в моей функции инициализации:

CGSize winSize = [[CCDirector sharedDirector] winSize];
        CCSprite *player = [CCSprite spriteWithFile:@"player.png" 
                                               rect:CGRectMake(0, 0, 40, 40)];
        player.position = ccp(player.contentSize.width/2 + 10, winSize.height/2);
        [self addChild:player]; 



        CCSprite *ball = [CCSprite spriteWithFile:@"ball.png" 
                                               rect:CGRectMake(0, 0, 20, 20)];
        ball.position = ccp((player.contentSize.width/2 + 10)+ball.contentSize.width/2, winSize.height/2);
        [self addChild:ball];   

Игрок, конечно, больше.Я полагаю, что этот код должен поместить оба шара в вертикальном центре экрана.Но то, что я получаю, это:

enter image description here

Почему центр второго шара ниже, чем центр большего шара?Насколько я понимаю, вы должны рассматривать мертвую точку спрайта как точку, в которой вы размещаете спрайт, и что winSize.height / 2 должен поместить оба спрайта в вертикальную середину.Я определяю размеры (я думаю) как 40x40 и 20x20, я убедился, что эти изображения именно такого размера.

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

Спасибо!

Ответы [ 2 ]

1 голос
/ 29 июня 2011

Вы можете сделать это таким образом, но я бы не стал. Попробуйте использовать Box2D. Это довольно простой в использовании физический движок. Для того, что вы хотите сделать, его очень легко использовать.

На этом сайте есть много отличных учебных пособий, которые помогут вам быстро освоить скорость:

RayWenderlich.com

1 голос
/ 29 июня 2011

Позиция указана в верхнем левом углу.Если вы измените свой код на это, оба должны быть отцентрированы (обратите внимание, вычитая половину высоты).Возможно, вам придется изменить размер прямоугольника, чтобы он соответствовал фактическому размеру .png, если они не совпадают.

CGSize winSize = [[CCDirector sharedDirector] winSize];
CCSprite *player = [CCSprite spriteWithFile:@"player.png" 
                                           rect:CGRectMake(0, 0, 40, 40)];
player.position = ccp(player.contentSize.width/2 + 10, winSize.height/2 - player.contentSize.height/2);
[self addChild:player]; 



CCSprite *ball = [CCSprite spriteWithFile:@"ball.png" 
                                           rect:CGRectMake(0, 0, 20, 20)];
ball.position = ccp((player.contentSize.width/2 + 10)+ball.contentSize.width/2, winSize.height/2 - ball.contentSize.height/2);
[self addChild:ball];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...