gpt4 book ai didi

ios - 移动场景 : SKAction animation or anchorPoint in update method?

转载 作者:行者123 更新时间:2023-11-28 21:51:16 25 4
gpt4 key购买 nike

我的游戏基于并排的两个屏幕(A 和 B),但设备屏幕一次只能显示其中一个。
例如 A 在位置 (0, 0),B 在 (320, 0)

我尝试了两种从 A 切换到 B 的解决方案:

  • 首先,我将整个场景放入一个节点,即主节点。换成从 A 到 B,只需将 MainNode 位置设置为 (0, -320)。
  • 另一个更优雅的恕我直言的解决方案(但不适用于使用 Coco2D 库的 LearnCoco2D),是将场景 anchor 移动到 (0, -1)

现在,如果我想用动画从 A 转到 B,则必须调整这两个解决方案:

  • 通过使用 SKAction

    [Main runAction:[SKAction moveToY:-320 duration:0.1]];

  • 通过在update 方法中动画化anchorPoint

    if(anchorY > -1) anchorY -= 0.1;

这两个解决方案有效(尽管线性 SKAction::timingMode 不能正确呈现线性平移),但我想知道在优化和优雅方面哪个是最好的。欢迎文档 ;)

编辑:

显然,我的问题不清楚(可能是因为我的英语水平)。

简而言之,我的问题是:滚动场景的最佳实践究竟是什么?

最佳答案

我很惊讶 (0, -1) 没有抛出一个巨大的异常。根据文档,您得到的范围是 0 到 1。这可能会在将来引起问题。请参阅文档 here

改变你的立场听起来是一种更优雅的处理方式。然而,在 1/10 秒的跨度内将它变为负 -320 是相当快的,并且可以解释为什么它看起来很有趣。另外,如果你不确定你只调用一次它看起来真的很奇怪。我会确保它只被调用一次,并且可能使用 bool 来切换是否应该移动它而不是检查位置。

如果您经常在一个屏幕和另一个屏幕之间来回切换,这可能是一个不错的解决方案。但是,如果您希望将其缩放到更大的 map ,您将在其中多次过渡到新屏幕,我会推荐一种不同的方法。就像在需要时在屏幕外创建一个新节点并转换父节点然后弹出旧节点一样。

希望对您有所帮助。

编辑

现在的问题是“滚动场景的最佳实践究竟是什么”。

我会推荐评论中提到的 LearnCoco2D 以及我在原始答案中回避的内容。

  • 在场景中添加一个子节点来处理定位(我们称之为 mapNode)
  • 将代表场景的任何 Sprite 添加到 mapNode
  • 更新时只移动 MapNode 位置

过去,我以类似的方式构建场景,并根据更新循环中的玩家位置处理场景位置。当玩家在 map 上四处走动时,我能够将玩家保持在屏幕中央。可能会偏离主题,但这是我从我的经验中找到的处理滚动场景的最佳实践。我在做的项目可以查看here

我希望这能回答您的问题。

关于ios - 移动场景 : SKAction animation or anchorPoint in update method?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28255541/

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