【发布时间】:2015-10-23 18:58:13
【问题描述】:
我有一个名为 Bird 的类,它是一个 SKSpriteNode。我确实初始化了它,但我不知道如何在同一个类中而不是在 GameScene 类中设置physicsBody 和它的其他属性。
鸟类:
import SpriteKit
class Bird: SKSpriteNode {
init() {
let texture = SKTexture(imageNamed: "birdy")
let size = texture.size()
super.init(texture: texture, color: UIColor.clearColor(), size: CGSizeMake(size.width/4, size.height/4))
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
GameScene中设置Bird属性的函数:
var birdSprite: Bird!
func setupBird() {
birdSprite = Bird()
birdSprite.position = CGPointMake(size.width*0.5, size.height*0.2)
birdSprite.zPosition = Layer.Bird.rawValue
self.addChild(birdSprite)
birdSprite.physicsBody = SKPhysicsBody(circleOfRadius: birdSprite.size.width/2)
birdSprite.physicsBody?.categoryBitMask = PhysicsCategory.Bird
birdSprite.physicsBody?.collisionBitMask = PhysicsCategory.None
birdSprite.physicsBody?.contactTestBitMask = PhysicsCategory.Desk
birdSprite.physicsBody?.allowsRotation = false
birdSprite.physicsBody?.restitution = 0
birdSprite.physicsBody?.usesPreciseCollisionDetection = true
}
我尝试通过在 Bird 类中定义它来设置它的物理体,使用 self.physicsBody = ...,但这给了我一个错误,以及在 init 函数中以相同的方式设置它,所以我没有将其包含在代码中。
我想在单独的课程中这样做的原因是我想学习如何编写组织良好的代码,以便代码更具可读性和自我解释性。但我或多或少是 Swift 和一般编程的初学者,所以缺乏经验和知识给我带来了一些麻烦。
欢迎任何帮助或建议!
【问题讨论】: