ユーザーの攻撃を選択できるRPGタイプのゲームを作っています。一般的な変数が記述されている「Projectile」という名前のスーパークラスと、変数を変更するサブクラスを持つようにしようとしています。しかし、変数の値をオーバーライドするたびに、EXC_BAD_INSTRUCTION が発生します。
import Foundation
import SpriteKit
class Projectile: SKNode {
var texture: SKTexture!
var projectileBody = SKSpriteNode()
var projectile: SKEmitterNode!
var negativeEffect: DefaultNegativeEffect!
func setUpValues() {
texture = SKTexture(imageNamed: "bokeh.png")
projectileBody = SKSpriteNode()
projectile = SKEmitterNode(fileNamed: "testbokeh.sks")
negativeEffect = DefaultNegativeEffect(runningSpeed: 0)
}
override init() {
super.init()
projectileBody.texture = texture
projectileBody.size = texture.size()
projectileBody.position = self.position
self.physicsBody = SKPhysicsBody(circleOfRadius: 2)
self.physicsBody?.dynamic = true
self.physicsBody?.categoryBitMask = PhysicsCategory.Projectile
self.physicsBody?.contactTestBitMask = PhysicsCategory.Monster
self.physicsBody?.collisionBitMask = PhysicsCategory.None
self.physicsBody?.usesPreciseCollisionDetection = true
projectile.position = self.position
self.addChild(projectileBody)
self.addChild(projectile)
}
func update() {
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
import Foundation
import SpriteKit
class FireBall: Projectile {
override func setUpValues() {
texture = SKTexture(imageNamed: "spark5.png")
projectileBody = SKSpriteNode()
projectile = SKEmitterNode(fileNamed: "testbokeh.sks")
negativeEffect = DefaultNegativeEffect(runningSpeed: 0)
}
}