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
在游戏场景中的位置吗
类别代码
将myCharacter
类分配给myhero
的方法:
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
}