首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swift/Sprite-kit添加了一个始终位于顶部和底部的静态hud,可移动游戏位于中间?

Swift/Sprite-kit添加了一个始终位于顶部和底部的静态hud,可移动游戏位于中间?
EN

Stack Overflow用户
提问于 2015-09-30 08:18:24
回答 3查看 621关注 0票数 0

我一直在尝试在xcode7中学习spritekit。到目前为止,我有一个比屏幕更大的关卡,一个我可以四处移动的英雄,以及一个当英雄离开可视屏幕区域时跟随他的相机。接下来,我尝试在屏幕的顶部和底部创建一个hud。底部是操纵杆/按钮所在的位置。

我尝试了这样的东西:

代码语言:javascript
复制
let hud = SKSpriteNode(color: SKColor.blackColor(), size: CGSizeMake(self.size.width, self.size.height * 0.05))
hud.anchorPoint = CGPointMake(0, 0)
hud.position = CGPointMake(0, (self.view?.bounds.height)! - hud.size.height)
self.addChild(hud)

但是这把一个黑色的视图放在了我的顶层,只有当我把我的英雄带到那里的时候我才能看到它。这意味着如果我把它移到底部,只要我的英雄一走上操纵杆,按钮就会从屏幕上消失。

谁能提供任何方向,我如何添加huds到精灵套件,始终在可见区域的顶部和底部,同时仍然允许英雄在关卡周围移动?

EN

回答 3

Stack Overflow用户

发布于 2015-09-30 08:58:45

您可以将HUD添加为场景的子对象,然后将世界也添加为场景的子对象。这个角色必须是这个世界的孩子。

这样,角色可以在世界上移动,然后世界可以在场景中移动,因此角色可以是可见的,而不会扰乱HUD。

票数 1
EN

Stack Overflow用户

发布于 2016-12-02 17:34:52

Swift 3:

这应该会将您的hud (假设是SKNode)从摄影机的原始anchorPoint (0.5,0.5)移动到CGPoint.zero always visible:

代码语言:javascript
复制
override func didSimulatePhysics() {
        hud.position = CGPoint(x:-self.frame.midX,y:-self.frame.midY)
}
票数 1
EN

Stack Overflow用户

发布于 2015-09-30 10:08:38

有两个选项可以做到这一点,一个是添加UIButtons到您的视图,它将始终显示在顶部,另一个(我经常使用)是动态设置基于场景锚点的平显设备的位置。

第一种方法非常简单,只需在界面生成器中创建UIButtons和UILabels,它们应该位于场景的顶部(您可能需要摆弄视图层编号才能使其显示在上面)。

另一种方法是在didSimulatePhysics方法中放入一些代码(只有在更新之后和物理模拟完成后才会调用)。基本上,做你正在做的事情,并将hud的位置设置为场景的anchorPoint乘以场景的宽度和高度。就像这样(我的Swift有点粗糙):

代码语言:javascript
复制
let x = (((-self.scene.anchorPoint.x) * self.frame.size.x) + anyOffsetRequired.x)
let y = (((-self.scene.anchorPoint.y) * self.frame.size.y) + anyOffsetRequired.y)
hud.position = CGPointMake(x, y)

anchorPoint上的-取决于移动场景的anchorPoint的工作方式(向右需要负向,向下需要正向)。anyOffsetRequired只是一个允许您设置偏移量的CGPoint,在您的情况下可能需要也可能不需要。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32855793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档