我创建了一个UIImageView,该UIImageView应该具有与关联节点相同的位置,但是由于UIView的坐标不等于Node的坐标,因此视图有时处于错误的位置。
所以问题是是否有一种方法可以将Image放置在节点中并停留在节点上。
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)
}
}
答案 0 :(得分: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)
播放器的位置应为(0/0)进行调整。