我创建了应有的相关节点的相同位置,但由于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)
}
}
所以,我终于找到了一个解决方案:
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),用于调整。