Cocos2d:为什么视网膜显示器会加速?

时间:2011-09-05 16:19:54

标签: iphone ipad cocos2d-iphone retina-display

在更新方法中:我正在移动一个这样的平面:

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

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

在iPad上作为通用应用程序进行测试它按预期工作,但是当我在iPhone 4上测试时,飞机的移动速度是原来的两倍!我正在使用-hd图像作为视网膜显示版本。 在使用视网膜显示器时,我是否遗漏了某些东西或者必须将上述代码中的速度降低一半?

2 个答案:

答案 0 :(得分:1)

Cocos2d使用点进行测量,因此即使使用视网膜,也可将屏幕位置视为480x320。听起来vVelocity基于像素,所以它应该是它的两倍。错误是计算速度的地方。有关详细信息,请参阅http://www.cocos2d-iphone.org/wiki/doku.php/prog_guide:how_to_develop_retinadisplay_games_in_cocos2d

答案 1 :(得分:1)

我无法重现此行为。您应该将速度(以每秒点数给出)乘以delta。这应该表现得如此(在有和没有视网膜显示的iOS模拟器中测试):

-(void) update:(ccTime)delta
{
    // ...
    CGPoint pos = plane.position;
    pos.x += vVelocity.x*delta;
    pos.y += vVelocity.y*delta;
    plane.position = pos;
}