gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:22:00 25 4
gpt4 key购买 nike

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

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

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

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

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

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

我在 didSimulatePhysics 中通过增加/减少其 x 值 来移动玩家。最后,在 didSimulatePhysics 中,我调用此方法将玩家的 worldNode 居中:

- (void)centerViewOn:(CGPoint)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 的经验吗?或者有没有人遇到过同样的问题?如果是这样,您是如何解决的?

提前致谢!

最佳答案

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

- (void)centerViewOn:(CGPoint)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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com