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

ios - SpriteKit - 节点稍微调整位置

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

我有许多单独的节点(图 block )构成我的游戏背景。它们都是 32x32p,并且彼此相邻放置以形成地板/屋顶/障碍物。我从 JSON 文件加载 map ,并在场景初始化时根据 JSON 文件的内容将节点放置在背景层/节点上。

这工作正常,但是,我在移动背景层/物理引擎正在做它的事情时遇到了一些错误。一些节点彼此移动 1 个点/像素,从而在它们之间产生间隙。而且由于背景是不同的颜色,这看起来很糟糕。

问题主要发生在 map 更远的地方(不是马上),同时我正在向玩家施加脉冲或物理引擎正在弹跳玩家(或类似的)。

这是说明我的问题的图片:

Illustrative image. Click to open in new tab (Click to open in separate tab)

如您所见,在 节点 中的 od 之间,有一个间隙(在全尺寸中更容易看到)链接中的图像)。在玩游戏的过程中会时不时地出现很多这样的间隙,而且它们只会出现一两秒。有时它们会在玩家停止移动时停留。

我通过增加/减少其 x-value 来移动 didSimulatePhysics 中的播放器。然后最后在 didSimulatePhysics 我调用这个方法将 worldNode 放在播放器的中心:

- (void)centerViewOnCGPoint)centerOn {
  CGFloat x = Clamp(centerOn.x, self.size.width / 2, _bgLayer.layerSize.width - self.size.width / 2);

  _worldNode.position = CGPointMake(-x, _worldNode.position.y);
}

worldNode 包含 bgLayer(包含所有单独的背景节点)和播放器本身。

解决此问题的最佳方法是什么?一个可行的解决方案是让每个图 block 都为 33x32p,因此它们是重叠的。在这种情况下,您将不会看到不时出现的差距。但我认为“杀死”问题而不是隐藏它会更好。 有人有这样布置 map 的经验吗?或者以前有没有人遇到过同样的问题?如果是这样,您是如何解决的?

提前致谢!



Best Answer-推荐答案


这是基于@LearnCocos2D 评论的转换为 Int 解决方案:

- (void)centerViewOnCGPoint)centerOn {
  CGFloat x = Clamp(centerOn.x, self.size.width / 2, _bgLayer.layerSize.width - self.size.width / 2);

  _worldNode.position = CGPointMake(Int(-x), Int(_worldNode.position.y));
}

关于ios - SpriteKit - 节点稍微调整位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24921017/

回复

使用道具 举报

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

本版积分规则

关注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