• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 物理暂停 Sprite Kit 游戏在 iOS 9 上无法正常运行

[复制链接]
菜鸟教程小白 发表于 2022-12-12 18:08:37 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我在暂停 Sprite 套件游戏时遇到了问题。游戏包含一个在 SpriteScene 中移动的球,并具有以下参数:

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;

问题是当我暂停游戏时,我会调用这些方法:

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];

当恢复时,调用这些:

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 上总是失败。

有什么建议吗?!!



Best Answer-推荐答案


经过交谈,我们得出结论,在iOS8和iOS9之间,Apple做了一个改变,暂停场景现在暂停更新循环。由于更新循环正在暂停,因此无法正确计算时间变化。现在发生的事情是时间的变化将是取消暂停的时间 - 暂停的时间,模拟滞后状态。速度将使数学生效,并根据此时间差移动对象。为了解决这个问题,只需创建一个包含所有场景对象的父节点,然后暂停父节点。这将允许更新仍然被调用,从而使时间变化与帧速率保持一致。

关于ios - 物理暂停 Sprite Kit 游戏在 iOS 9 上无法正常运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34764168/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap