Cocos2d: почему двукратное отображение на сетчатке? - PullRequest
0 голосов
/ 05 сентября 2011

В методе обновления: слоя, я перемещаю плоскость так:

-(void) update:(ccTime)delta
{
    ...

    pos.x += vVelocity.x;
    pos.y += vVelocity.y;
    plane.position = pos;
}

Тестирование как универсальное приложение на iPad, оно работает как положено, но когда я тестирую на iPhone 4, самолет движется в два раза быстрее! Я использую изображение -hd для версии дисплея сетчатки. Я что-то упускаю или мне нужно вдвое увеличить скорость в приведенном выше коде при использовании дисплея сетчатки?

Ответы [ 2 ]

1 голос
/ 05 сентября 2011

Я не мог воспроизвести это поведение. Вы должны умножить скорость (в пунктах в секунду) на дельту. Это ведет себя как следует (протестировано в симуляторе iOS с дисплеем сетчатки и без него):

-(void) update:(ccTime)delta
{
    // ...
    CGPoint pos = plane.position;
    pos.x += vVelocity.x*delta;
    pos.y += vVelocity.y*delta;
    plane.position = pos;
}
1 голос
/ 05 сентября 2011

Cocos2d использует точки для измерения, поэтому обрабатывайте положение экрана как 480x320 даже с сетчаткой. Похоже, что vVelocity основывается на пикселях, так что это вдвое больше, чем должно быть. Ошибка в том, где скорость рассчитывается. См. http://www.cocos2d -iphone.org / wiki / doku.php / prog_guide: how_to_develop_retinadisplay_games_in_cocos2d для получения дополнительной информации.

...