Установка положения SKSpriteNodes из пользовательского класса SKSpriteNode

Что я хочу сделать, так это уметь устанавливать положение skspritenode (героя) в моей игровой сцене, когда я назначаю ему свой класс (Персонажа).

Я думаю, что не так, когда ему присваиваются CGPoints frame.midX и frame.midY, он не знает, на какой кадр он ссылается, поэтому он обнаруживается где-то совершенно иначе.

Так что любые идеи, как я могу исправить свой класс так, чтобы cPosition фактически установил позицию моего героя в моей игровой сцене, были бы очень благодарны.

Код класса

class Character: SKSpriteNode{

    var cSize: CGSize
    var cColor: UIColor
    let cName: String
    let cTexture: SKTexture
    let cPosition: CGPoint

    init(cTexture: SKTexture,cSize: CGSize,cColor: UIColor, cName: String,cPosition: CGPoint){

        self.cSize = cSize
        self.cColor = cColor
        self.cName = cName
        self.cTexture = cTexture
        self.cPosition = cPosition

        super.init(texture: cTexture, color: cColor, size: cSize)
    }






    func jump(xForce: CGFloat, yForce: CGFloat){

        physicsBody?.applyImpulse(CGVector(dx: xForce, dy: yForce))



    }

Метод, где мой класс Персонажа назначается моему герою

     func addHero() {

            let hero = Character(cTexture: SKTexture(imageNamed: "testAvacado.png") ,cSize: CGSize(width: 68, height: 28), cColor: .blue, cName: "hero",
cPosition: CGPoint(x: frame.midX, y: frame.midY))

            hero.physicsBody = SKPhysicsBody(texture: hero.cTexture, size: hero.cSize)

            addChild(hero)


        }

Всего 1 ответ


Вы на самом деле не позиционируете свой спрайт, переменная cPosition в данный момент ничего не делает. Измените свой метод init следующим образом:

var cSize: CGSize
var cColor: UIColor
let cName: String
let cTexture: SKTexture
//let cPosition: CGPoint

init(cTexture: SKTexture,cSize: CGSize,cColor: UIColor, cName: String,cPosition: CGPoint) {

    self.cSize = cSize
    self.cColor = cColor
    self.cName = cName
    self.cTexture = cTexture
    //self.cPosition = cPosition

    super.init(texture: cTexture, color: cColor, size: cSize)

    self.position = cPosition
}

Есть идеи?

10000