Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Cocos2d/Box2d游戏在iPad Air上运行不佳_Ios_Performance_Cocos2d Iphone_Ios7_Box2d - Fatal编程技术网

Ios Cocos2d/Box2d游戏在iPad Air上运行不佳

Ios Cocos2d/Box2d游戏在iPad Air上运行不佳,ios,performance,cocos2d-iphone,ios7,box2d,Ios,Performance,Cocos2d Iphone,Ios7,Box2d,iPad air发布时,我的第一款cocos2d 2/Box2d游戏已经完成了95%。这款游戏在iPad mini上运行得非常顺利,但在空气中却一点也不顺利——有很多口吃和急促的动作,但帧速率为60 我使用了一个固定的时间步长,经过长时间的调查,我发现通过将每帧最大循环次数的值从2增加到3,Air可以平稳运行,但mini运行不好 所以我的问题是,有没有人碰到过这件事,这件事怎么解决?我想我可以尝试确定H/W并更改值,但必须有一个很好的中断原因和更好的方式来容纳所有设备 谢谢 蒂诺克 正在添加代码

iPad air发布时,我的第一款cocos2d 2/Box2d游戏已经完成了95%。这款游戏在iPad mini上运行得非常顺利,但在空气中却一点也不顺利——有很多口吃和急促的动作,但帧速率为60

我使用了一个固定的时间步长,经过长时间的调查,我发现通过将每帧最大循环次数的值从2增加到3,Air可以平稳运行,但mini运行不好

所以我的问题是,有没有人碰到过这件事,这件事怎么解决?我想我可以尝试确定H/W并更改值,但必须有一个很好的中断原因和更好的方式来容纳所有设备

谢谢 蒂诺克

正在添加代码段

- (void) update:(ccTime) dt {

static double UPDATE_INTERVAL = 1.0f/60.0f;
static double MAX_CYCLES_PER_FRAME = 2; // 3 or more makes iPad air happy and iPad mini unhappy
static double timeAccumulator = 0;

timeAccumulator += dt;
if (timeAccumulator > (MAX_CYCLES_PER_FRAME * UPDATE_INTERVAL)) {

    timeAccumulator = UPDATE_INTERVAL;
}

// Advance score multiplier timeout
if (_scoreMultiplierTimeout > 0.0) {

    _scoreMultiplierTimeout -= dt;

    if (_scoreMultiplierTimeout <= 0.0) {

        _scoreMultiplierTimeout = 0.0;
        _scoreMultiplier = 1;
    }
}

//int32 velocityIterations = 8;
//int32 positionIterations = 1;

int32 velocityIterations = 3;
int32 positionIterations = 2;

while (timeAccumulator >= UPDATE_INTERVAL) {

    timeAccumulator -= UPDATE_INTERVAL;
    _world->Step(UPDATE_INTERVAL, velocityIterations, positionIterations);
    _world->ClearForces();

    // Iterate over the bodies in the physics world
    for (b2Body* b = _world->GetBodyList(); b; b = b->GetNext()) {

        if (b->GetUserData() != NULL) {

...
-(无效)更新:(ccTime)dt{
静态双更新间隔=1.0f/60.0f;
静态double MAX_CYCLES_PER_FRAME=2;//3或更多会让iPad air和iPad mini感到高兴
静态双时间累加器=0;
时间累加器+=dt;
if(时间累加器>(每帧最大循环次数*更新间隔)){
时间累加器=更新间隔;
}
//提前分数倍增超时
如果(_scoreMultiplierTimeout>0.0){
_scoreMultiplierTimeout-=dt;
如果(\u scoreMultiplierTimeout=更新\u间隔){
时间累加器-=更新间隔;
_世界->步骤(更新间隔、速度迭代、位置迭代);
_世界->清洁力量();
//迭代物理世界中的物体
对于(b2Body*b=_world->GetBodyList();b;b=b->GetNext()){
如果(b->GetUserData()!=NULL){
...

发布显示如何更新添加的物理世界代码的代码。顺便说一句,对velocityIterations和positionIterations的更改是我尝试和错误调查的一部分-这没有什么区别。另外请注意,iPhone 5也很满意每帧的最大循环次数=2,而不满意每帧的最大循环次数为3。每帧和每帧重复多次同时将增量时间合并到更新中是没有意义的。使用固定的时间步长,并且每帧只执行一次步长。如果遇到模拟精度问题,请增加迭代次数。我想我理解……我已经删除了所有时间累加器的内容,并且依靠更新每秒调用60次-在更新过程中,我更新了步长once和精灵定位一次。这一切都很好,但如果更新调用需要超过1/60秒才能执行,会发生什么?所有累加器的东西到底有什么用?如果帧速率在固定的物理时间步长下下降到60 fps以下,那么物理模拟会变慢。这实际上很好,因为应用物理增量时间导致可能的问题行为。更多详细信息如下: