Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 从自定义SKSpriteNode类设置SKSpriteNode位置_Swift_Sprite Kit - Fatal编程技术网

Swift 从自定义SKSpriteNode类设置SKSpriteNode位置

Swift 从自定义SKSpriteNode类设置SKSpriteNode位置,swift,sprite-kit,Swift,Sprite Kit,当我将我的类(角色)分配给一个skspritenode(英雄)时,我想设置它在游戏场景中的位置 当它被赋予CGPointsframe.midX和frame.midY时,它不知道它所指的帧是什么,因此它显示在完全不同的地方 你知道我如何修复我的类,以便cPosition将实际设置我的hero在游戏场景中的位置吗 类别代码 将myCharacter类分配给myhero的方法: func addHero() { let hero = Character(cTextu

当我将我的类(
角色
)分配给一个
skspritenode
英雄
)时,我想设置它在游戏场景中的位置

当它被赋予
CGPoints
frame.midX
frame.midY
时,它不知道它所指的帧是什么,因此它显示在完全不同的地方

你知道我如何修复我的类,以便
cPosition
将实际设置我的
hero
在游戏场景中的位置吗

类别代码 将my
Character
类分配给my
hero
的方法:

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

实际上,您并没有定位您的精灵,
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
}

棒极了,这就像一个符咒,我假设这是有效的,因为它在初始化节点时将cPosition分配给skview中节点的位置?我不确定到底发生了什么。如果你能详细说明一下,我会非常感激你在给一个同名的变量赋值之前,但是它只是一个变量,你可以把它命名为
blabla
,但是你实际上并没有给精灵分配一个位置,您需要更改其现有的
位置
变量。
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
}