SpriteKit / UIKit - Как установить положение UIView в положение узла? - PullRequest
0 голосов
/ 02 февраля 2019

Я создал UIImageView, который должен иметь ту же позицию связанного узла, но, поскольку координаты UIView не равны координатам узла, представление иногда находится в неправильной позиции.

Так чтовопрос в том, есть ли способ разместить изображение в узле и остаться там.

Здесь вы можете увидеть результат кода ниже

Заранее спасибо.

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)
}
}

1 Ответ

0 голосов
/ 03 февраля 2019

Итак, я наконец-то нашел решение:

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) для корректировки.

...