【问题标题】:Prevent SKSpriteNode from "overflowing" outside SKSpriteNode防止 SKSpriteNode 在 SKSpriteNode 之外“溢出”
【发布时间】:2017-11-09 14:37:00
【问题描述】:

我正在我的游戏中制作小地图,我需要做两件事。

  1. 我的小地图不会像这样“溢出”到指定区域之外

  1. 我正在小地图上显示一个红色的“箭头”,代表玩家的位置,我需要小地图与玩家一起移动,以便小地图始终以玩家位置为中心(即使他走到了玩家位置的边缘)地图)

如何快速实现这些目标?

【问题讨论】:

  • 发布一些代码,这是您迄今为止尝试实现的目标。地图的叠加层和地图本身都是SKNodes吗?至于第 2 点 - 这是一个完全独立的问题,所以再写一个问题并发布代码,请参考我的评论,我可能会有所帮助。

标签: ios swift sprite-kit


【解决方案1】:

由于没有提供代码,我将仅谈谈您需要使用的技术

为避免重叠,您希望使用SKCropNode 创建裁剪区域。

背后的想法很简单。

let cropNode = SKCropNode()
cropNode.maskNode = maskNode <---This is a black and white representation of what you expect the node to draw, where if alpha < .5 means do not draw, and alpha >= .5 means draw.  I would start with an SKShapeNode to achieve said effect
cropNode.addChild(miniMap)

保持小地图相对于玩家也很简单。

假设您的地图是 1024x1024 瓦片,那么您的小地图是 1024x1024 点

重要的是,两个锚点必须相同

您获取玩家在图块世界中的位置,然后将 x 除以图块宽度,将 y 除以图块高度,就可以得到您在小地图世界中的位置。

只需将小地图移动到您刚刚创建的负位置(即 -x 和 -y),这将使您的小地图与玩家所在的位置对齐。

【讨论】:

  • 非常感谢!我为缺少代码而道歉,我昨天参加了学校考试,但一直没有机会编辑我的答案
猜你喜欢
  • 2016-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多