SpriteKit / UIKit的 - 如何设置的UIView的一个节点的位置的位置?

问题描述 投票:0回答:1

我创建了应有的相关节点的相同位置,但由于UIView的坐标不等于节点的坐标的观点有时是在错误的位置一个UIImageView。

所以,问题是,如果有一个定位在节点中的图象,呆在那里方法。

Here you can see the result of the code below

先感谢您。

import SpriteKit

class GameScene: SKScene {

var player = SKSpriteNode()
var frames : Array = [UIImage]()
var playerView = UIImageView()


override func didMove(to view: SKView) {

    player = SKSpriteNode(color: .clear , size: CGSize(width: 50,     height: 100))

    player.physicsBody = SKPhysicsBody(rectangleOf: player.size)
    player.physicsBody?.affectedByGravity = false

    for i in 1...6 {
        frames.append(UIImage(named: "playerRunLeft-\(i)")!)
        playerView.contentMode = .topLeft
    }

    player.position = CGPoint(x: 0, y: 0)

    playerView.animationImages = frames
    playerView.animationDuration = 0.5
    playerView.contentScaleFactor = 6
    playerView.frame.origin = CGPoint(x: view.center.x , y: view.center.y)
    playerView.startAnimating()

    addChild(player)
    view.addSubview(playerView)
}
}
swift uiview sprite-kit position constraints
1个回答
0
投票

所以,我终于找到了一个解决方案:

let adjustRatioY = -(view.frame.height / scene!.frame.height)*player.position.y - 24
let adjustRatioX = (view.frame.width / scene!.frame.width)*player.position.x - 15

playerView.center = CGPoint(x: view.center.x + adjustRatioX , y: view.center.y + adjustRatioY )

我已经使用这个功能,它完美的作品。如果有人有相同的问题:你必须调整-24和手动15居中UIImageView的这样:

playerView.center = view.center //(adjust here)

Player.position应该是(0/0),用于调整。

© www.soinside.com 2019 - 2024. All rights reserved.