swift - 如何在 Swift 中将 SKTilemap 场景定位在屏幕中间
问题描述
我在 Swift 5 中创建了一个 TilemapScene (CKTilemapScene.sks)。这基本上是为了铺设我的游戏项目的瓦片地图背景。请参阅下面的第二个屏幕截图。
然后,在我的主要 swift 代码中,我使用标准代码加载所有背景。但是,不知何故,瓦片地图没有居中。请参阅下面的第一个屏幕截图。但是,在屏幕的左下方。我试着玩锚点。那没有帮助。我设置错了吗?
导入 UIKit 导入 SpriteKit 导入 GameplayKit
类 GameViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
if let view = self.view as! SKView? {
if let scene = SKScene(fileNamed: "CKTilemapScene") {
// Present the scene
view.presentScene(scene)
}
view.ignoresSiblingOrder = true
view.showsFPS = true
view.showsNodeCount = true
view.showsPhysics = true
}
}
override var shouldAutorotate: Bool {
return true
}
override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
if UIDevice.current.userInterfaceIdiom == .phone {
return .landscape
//.allButUpsideDown
} else {
return .all
}
}
解决方案
将 的位置设置为SKScene
的SKView
中心。
override func viewDidLoad() {
super.viewDidLoad()
if let view = view as? SKView {
if let scene = SKScene(fileNamed: "CKTilemapScene") {
scene.position = view.center
view.presentScene(scene)
}
}
//...
}
推荐阅读
- android - 有什么方法可以在后台使用 FirebaseMessagingService 从推送通知中获取数据?
- android - 将 ListAdapter(来自伴随对象)作为线程抛出
- asp.net-core - 让 ASP.NET 核心应用程序始终在 IIS 中运行
- ehcache - 为 Axon Sagas 启用 Ehcache 缓存
- javascript - 在浏览器环境中拦截 HTML5 Web 通知
- php - 什么类型的文本存储在 img 字段 bytea 类型无法使用 php 显示
- unicode - Hugo Markdown Post 中的非英语 Unicode 支持
- c++ - 矩阵 C++ 中的两行与 Eigen 的内积
- hibernate - 是否可以通过我们的自定义参数在 JPA 中使用 FindAllById
- sql - 汇总数据库中的所有数字列并记录结果