Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.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 控制我游戏的速度?_Ios_Iphone_Objective C_Sprite Kit - Fatal编程技术网

Ios 控制我游戏的速度?

Ios 控制我游戏的速度?,ios,iphone,objective-c,sprite-kit,Ios,Iphone,Objective C,Sprite Kit,如何控制我的播放器的速度?我正在使用didSimulatePhysics()方法进行移动: if(([self childNodeWithName:@"hero"].position.x >= 180) && (self.touchedHero == YES) && _canMove ==YES){ [[self childNodeWithName:@"hero"]setPosition:CGPointMake(180,

如何控制我的播放器的速度?我正在使用
didSimulatePhysics()
方法进行移动:

   if(([self childNodeWithName:@"hero"].position.x >= 180)
   &&
   (self.touchedHero == YES)
    && _canMove ==YES){

    [[self childNodeWithName:@"hero"]setPosition:CGPointMake(180, [self childNodeWithName:@"hero"].position.y)];

    [self.world setPosition:CGPointMake(self.world.position.x-5, self.world.position.y)];

但是这个方法取决于设备的性能,当在iOS设备上运行我的应用程序时,速度非常不稳定,有时它运行得非常快,有时会慢下来,我如何控制这个速度???

< p>你会考虑(或不考虑)帧率无关性,或者改变你的游戏结构或物理计算的方式。更重要的是,这可能是开始消除代码中主要低效的好时机。。。这是一个要问自己的“开始”问题列表:

  • 您如何组织您的对象?你是否只是在所有的东西上循环,对所有的东西进行物理计算和碰撞检测,而不管这些计算是否不必要
  • 您是将对象划分到空间树中,还是只是在所有对象之间循环(最重要的是碰撞检测)
  • 你有多少物品?你需要多少?可以从游戏中删除任何内容而不牺牲您想要的用户体验吗
  • 您正在为屏幕外的对象执行物理计算吗
  • 你的物理或逻辑计算中有严重的算法缺陷吗?有什么可以改进几个数量级的吗
  • 您是否以合理的方式存储对象?不像上面的项目那么直接有效,但是你可以考虑对象池,例如
  • 您是否在昂贵的循环体中使用任何可以用C代码替换的Objective-C代码?(C函数调用在2个CPU周期内执行,而ARC中的Objective-C消息在9个周期内执行-这不是您应该首先看到的,但可能值得考虑。如果您处理大量对象,4.5倍的加速并不太糟糕-但这可能不是您的瓶颈)
在考虑iOS的情况下,深入了解FPS问题的更多细节

详细介绍了处理timestep更新的各种方法。这是一篇有趣的文章,但在你被时间步占据之前,你应该先看看你的数据结构和算法,看看有没有什么明显的东西