3 개의 스프라이트 그룹 (EnemyGroups)이 있고이 그룹은 특정 순서로 정렬되어 있습니다 (각각 하나씩 지연됩니다).SKActions는 특정 값의 변경을 인식하지 못합니다.
groupActionSequenceWithDelay(delayTime: 0, enemyGroup: enemyGroup1, groupKey: "group1")
groupActionSequenceWithDelay(delayTime: 1, enemyGroup: enemyGroup2, groupKey: "group2")
groupActionSequenceWithDelay(delayTime: 2, enemyGroup: enemyGroup3, groupKey: "group3")
나는 isStatic = false
을 가지고 enemyGroup1
및 enemyGroup2
을 설정 : 적 그룹에 대한
func groupActionSequence (enemyGroup: EnemyGroup) {
for enemy in enemyGroup.enemies {
var enemyGroupWithAction = enemyGroup
let groupSequence = SKAction.sequence([
SKAction.run({ enemyGroupWithAction.switchEnemiesON() }),
SKAction.wait(forDuration: showTime),
SKAction.run({ enemyGroupWithAction.switchEnemiesOFF() }),
SKAction.wait(forDuration: hideTime)
])
let repeatGroupAction = SKAction.repeatForever(groupSequence)
enemy.sprite.run(repeatGroupAction)
}
}
func groupActionSequenceWithDelay (delayTime: TimeInterval, enemyGroup: EnemyGroup, groupKey: String) {
for enemy in enemyGroup.enemies {
var group = enemyGroup
let groupSequence = SKAction.sequence([
SKAction.run({ group.setup() }),
SKAction.wait(forDuration: delayTime),
SKAction.run({ self.groupActionSequence(enemyGroup: enemyGroup) })
])
enemy.sprite.run(groupSequence, withKey: groupKey)
}
}
설정 작업 :
EnemyGroup :
struct EnemyGroup {
var enemies : [Enemy]
var isVisible : Bool
var isStatic : Bool
func setup () {
if isStatic {
for enemy in enemies {
enemy.sprite.alpha = 1.0
enemy.sprite.isUserInteractionEnabled = false
}
isVisible = true
}
}
mutating func switchEnemiesON () {
if !isStatic {
for enemy in enemies {
enemy.sprite.alpha = 1.0
enemy.sprite.physicsBody?.categoryBitMask = enemyCategory
enemy.sprite.physicsBody?.collisionBitMask = bombCategory
}
isVisible = true
}
}
mutating func switchEnemiesOFF () {
if !isStatic {
for enemy in enemies {
enemy.sprite.alpha = 0.0
enemy.sprite.physicsBody?.collisionBitMask = 0
enemy.sprite.physicsBody?.categoryBitMask = 0
}
isVisible = false
}
}
GameScene의 코드를 참조하십시오 enemyGroup3
~ isStatic = true
. 나는 enemyGroup1
및 enemyGroup2
isStatic
true
에 행동이 아직도 여전히 enemyGroup1
및 enemyGroup2 as if
isStatic = 거짓 . How can I get
switchEnemiesOFF() and
switchEnemiesON() to recognize changes in the value of
isStatic`에서 실행중인 변경? 또한 실행중인 액션에 1 초의 차이가있는 각 그룹의 동일한 순서를 유지하기를 원하기 때문에 작업을 중지하고 싶지 않습니다. 그 대신 if 문으로 일부 기능을 보호했습니다.