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

ios - 如何让 SKSpriteNode 重新出现在其 SKScene 的对面?

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

我已经对 SpriteKit 进行了一段时间的试验,如果我的 SKSpriteNode 在其 SKScene 的范围内移动,我将不胜感激。

使用加速度计,我在 SKSpriteNode 的 PhysicsBody 属性上施加力,以便以类似大理石的方式在屏幕上移动节点。目前,我使用 self.physicsBody = [SKPhysicsBody bodyWithEdgeLoopF​​romRect:self.frame] 设置场景的 PhysicsBody,以便大理石从场景边缘反弹。

我希望大理石一旦超出我的场景边界 (1),它会以相同的速度重新出现在场景的另一侧 (2),而不是从场景的边缘反弹。我还希望这种边界环绕立即发生,并且当大理石的任何部分移出我的场景边界 (3) 时,该部分将在场景的另一侧变得可见 (4)。

是否可以在使用单个 SKSpriteNode 并保留该节点的 PhysicsBody 时完成此操作?

提前致谢!

Desired Marble Movement



Best Answer-推荐答案


不。如果 Sprite 可以在任何方向离开屏幕,您需要 4 个 Sprite 节点,以避免 Sprite 在切换侧面时仅仅“弹出”进出。您必须通过选择 4 个 Sprite 之一作为“主” Sprite 来同步它们的位置和速度。

其他三个只是用来在屏幕边缘视觉上表示 Sprite 以及拾取物理接触(这可能很棘手,因为每个节点都可以接触,并且所有 4 个节点可能同时进行相同的接触) . Otoh 甚至可能没有必要给出其他三个物理体,这取决于要与哪些其他物体发生碰撞。仅仅是因为如果主设备也发生碰撞,“从设备”可能总是会发生碰撞,但这只有在其他物体使用相同的机制或在屏幕边框附近永远不会发生碰撞时才会发生。

您将通过场景大小的 +width、+height 和 +width+height 偏移 3 个副本,并根据主 Sprite 位置在每帧重新计算此偏移量。当主 Sprite 实际离开屏幕的一侧时,您将不得不更改它的位置。例如,当主 Sprite 离开屏幕右侧时,您将从其 x 位置减去(未设置!)场景大小的宽度。

关于ios - 如何让 SKSpriteNode 重新出现在其 SKScene 的对面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24111042/

回复

使用道具 举报

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

本版积分规则

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