首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >暂停使用物理的雪碧套件游戏在iOS 9上不能正确工作

暂停使用物理的雪碧套件游戏在iOS 9上不能正确工作
EN

Stack Overflow用户
提问于 2016-01-13 10:25:58
回答 1查看 362关注 0票数 3

我有一个问题,在暂停一个雪碧套件游戏与物理。该游戏包含一个在SpriteScene中移动的球,并具有以下参数:

代码语言:javascript
复制
self.ball.physicsBody.friction = 0;
self.ball.physicsBody.linearDamping = 0;
self.ball.physicsBody.restitution = 1.0f;
self.ball.physicsBody.affectedByGravity = NO;
self.ball.physicsBody.usesPreciseCollisionDetection = YES;

问题是,当我暂停游戏时,我称这些方法为:

代码语言:javascript
复制
self.scene.physicsWorld.speed = 0;
self.ball_velocity = self.ball.physicsBody.velocity;
self.ball.physicsBody.velocity = CGVectorMake(0, 0);
self.ball.speed = 0;
self.ball.physicsBody.dynamic = NO;
[self.scene.view setPaused:YES];

当你简历的时候,你可以这样说:

代码语言:javascript
复制
self.scene.physicsWorld.speed = 1;
self.ball.physicsBody.velocity = self.ball_velocity;
self.ball.physicsBody.dynamic = YES;
self.ball.speed = 1;
[self.scene.view setPaused:NO];

这就停止了球的动画,但是当恢复时,球的位置就会改变,如果在暂停期间移动的话。

顺便说一句,它在iOS 8上工作得很好,但是在iOS 9上总是失败的。

有什么建议吗?!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-13 17:23:47

聊天后,我们得出结论,在iOS8和iOS9之间,苹果做了一项改变,暂停了场景,暂停了更新循环。由于update循环正在暂停,因此没有正确计算时间上的更改。现在正在发生的是,时间的变化将是解除暂停的时间--暂停的时间,模拟一种滞后状态。速度将使数学生效,并根据这个时间差来移动物体。要解决此问题,只需创建一个父节点,该节点将容纳所有场景的对象,并暂停父节点。这将允许仍然调用更新,从而允许时间上的更改与帧速率保持一致。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34764168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档