Ios SpriteKit力下降至30 fps

Ios SpriteKit力下降至30 fps,ios,iphone,sprite-kit,game-engine,Ios,Iphone,Sprite Kit,Game Engine,我正在写一个自上而下的赛车游戏。对游戏的快速剖析如下: “汽车节点”通过在更新方法中设置physicsBody速度移动(我想设置physicbody的速度,而不是位置,因为我想在游戏中的任何位置检索汽车对象的速度值…),因此这是汽车移动: float dx=JoyPadRelativePosition.x*_maxSpeed; float dy=JoyPadRelativePosition.y*_maxSpeed; [self.car.physicsBody setVelocity: CG

我正在写一个自上而下的赛车游戏。对游戏的快速剖析如下: “汽车节点”通过在更新方法中设置physicsBody速度移动(我想设置physicbody的速度,而不是位置,因为我想在游戏中的任何位置检索汽车对象的速度值…),因此这是汽车移动:

 float dx=JoyPadRelativePosition.x*_maxSpeed;
 float dy=JoyPadRelativePosition.y*_maxSpeed;
 [self.car.physicsBody setVelocity: CGVectorMake(dx,-dy)];
同时,在didSimulatePhysics中,我移动_worldNode,使汽车始终位于屏幕中央:

CGPoint target = [self pointToCenterViewOn:self.car.position];
CGPoint newPosition = _worldNode.position;
newPosition.x += (target.x - _worldNode.position.x);
newPosition.y += (target.y - _worldNode.position.y);
SKAction *actionMove = [SKAction moveTo:newPosition duration:0.4];
[_worldNode runAction:actionMove];
使用此代码,在Ipad2和iphone5中,背景运动和汽车运动以60 fps的速度正确平稳地工作。问题来自iphone4,使用该设备,背景抖动和全局fps降低到40 fps。阅读stackOverflow问题和一些博客,我找到了一个解决方案,将全局fps限制为30(这样我可以确保所有设备都以相同的速率运行)


不管怎样,有了这个设置,我的背景在Ipad2、iphone5和iPhone4(所有真实设备)中都会产生抖动。为什么?由于新的标准30 fps速率,我不得不修改代码中的某些内容?

因为您使用的是物理模拟,您是否考虑过降低iPhone4的速度?您可以将物理模拟的速度设置为0.5,而不是默认值1,然后查看这是否有助于消除抖动。查看
SKPhysicsWorld
speed
方法

我只是看了一些代码,我必须做一些类似的事情。我只是移动背景节点的位置,让我的独角兽单独呆着。我没有使用
SKAction
操作,我只是根据屏幕移动的距离设置背景节点的位置。也许,如果你拿出你的
actionMove
,在计算完变化后,仅仅将
\u worldNode
位置设置为
newPosition
,它可能会“抖动”,因为30 fps不如60 fps平滑,这在游戏中比24 fps运行的电影要明显得多,所以没有办法让30 fps更平滑,根据定义,每秒30帧的动画绘制屏幕内容的频率较低,因此看起来不如每秒60帧平滑
_skView.frameInterval=2;