多くの敵艦があなたの方に来て、あなたがそれらに撃たなければならない宇宙侵略ゲームを作っています。複数回ヒットしたときにノードを削除する方法
プレイヤーが画面に触れると、プレイヤー船は敵の船で弾丸を撃つ。
1個の弾丸が敵の船に触れるたびに親から取り除かれるようにしました。しかし、私はそれを得ることができないように2つの弾丸が敵の船を親から削除する必要があります。なんらかの理由で、もう1つの敵船が場に呼び出されてから、敵の命が復活する。どのようにして各敵の船が独自の生活を持ち、他の敵の船の生活に影響を与えないようにすることができますか?ここで
は敵のクラスである:ここでpublic class Villain: SKSpriteNode {
var life = 2
init(){
let texture = SKTexture(imageNamed: "Villain")
var life = 2
print("number of lives: ", life)
super.init(texture: texture, color: SKColor.clear, size: texture.size())
self.name = "villain"
}
required public init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
は敵のクラスは
func VillainRight(){
let TooMuch = self.size.width
let point = UInt32(TooMuch)
let VillainR = Villain()
VillainR.zPosition = 2
VillainR.position = CGPoint(x: self.frame.minX,y: CGFloat(arc4random_uniform(point)))
//This code makes the villain's Zposition point towards the SpaceShip
let angle = atan2(SpaceShip.position.y - VillainR.position.y, SpaceShip.position.x - VillainR.position.x)
VillainR.zRotation = angle - CGFloat(M_PI_2)
let MoveToCenter = SKAction.move(to: CGPoint(x: self.frame.midX, y: self.frame.midY), duration: 15)
//Physics World
VillainR.physicsBody = SKPhysicsBody(rectangleOf: VillainR.size)
VillainR.physicsBody?.categoryBitMask = NumberingPhysics.RightV
VillainR.physicsBody?.contactTestBitMask = NumberingPhysics.Laser | NumberingPhysics.SpaceShip
VillainR.physicsBody?.affectedByGravity = false
VillainR.physicsBody?.isDynamic = true
VillainR.run(MoveToCenter)
addChild(VillainR)
}
と呼ばれているGameSceneクラスであり、ここでdidBeginContact方法の一部です:
//LASERS HIT ENEMY CHECK
if BodyOne.categoryBitMask == NumberingPhysics.Laser && BodyTwo.categoryBitMask == NumberingPhysics.LeftV{
run(VillainGone)
ToNextLevel -= 1
if BodyTwo.node != nil{
MakeExplosions(BodyTwo.node!.position)
}
BodyTwo.node?.removeFromParent()
BodyOne.node?.removeFromParent()
}
if BodyOne.categoryBitMask == NumberingPhysics.Laser && BodyTwo.categoryBitMask == NumberingPhysics.RightV{
ToNextLevel -= 1
if BodyTwo.node != nil{
MakeExplosions(BodyTwo.node!.position)
}
run(VillainGone)
BodyOne.node?.removeFromParent()
BodyTwo.node?.removeFromParent()
}
}
RECAP:
私がしたいことは、弾丸が2回触れると、敵の船が取り外されてしまうことです。そして、敵の生活は互いに独立しています(敵の船のライフが1つ残っていれば、もう1つの敵の船がシーンに呼び出されると2にリセットされません)。
私は頻繁に提案すると、一緒にそののuserDataを通じて各ノードに一意のIDを与えますヒット数。 –
ノードを複数回追加する関数を呼び出すと、その方法を教えてください。 –
あなたは検索を実行して自分自身で回答を見つけることを止めませんか? –