이것은 내 첫 번째 게시물입니다. 나는 답을 찾기 위해 어디에서나 보았고, 나는 올바르게하고있는 것처럼 보였지만, 제대로 작동하지 않는 것 같습니다.Swift SKAction.waitForDuration 너무 빨리 실행 중
저는 스위프트에서 두 노드 사이의 전투 순서를 실행하려고합니다. 각 노드가 공격 한 후에 다시 공격하기 전에 지정된 공격 속도 기간을 기다려야합니다.
다음은 전투 시퀀스 내 코드입니다 :
func playerMonsterCollision(player: Character, monster: Character) {
player.removeAllActions()
monster.removeAllActions()
let playerFight = player.dealDamage(monster)
let playerWait = SKAction.waitForDuration(player.attackSpeed)
let monsterFight = monster.dealDamage(player)
let monsterWait = SKAction.waitForDuration(monster.attackSpeed)
player.runAction(SKAction.repeatActionForever(SKAction.sequence([playerFight, playerWait])))
monster.runAction(SKAction.repeatActionForever(SKAction.sequence([monsterFight, monsterWait])))
}
그리고 이것은 호출되는 dealDamage 기능입니다 :
func dealDamage(target: Character) -> SKAction {
let action = SKAction.runBlock()
{
if (target.health > 0 && self.health > 0)
{
let damageDelt = self.calcAttack()
target.takeDamage(damageDelt)
print("Damage delt: \(damageDelt), \(target.name!) health: \(target.health).")
}
else
{
if self.name! == "Monster"
{
if !self.isAlive()
{
self.removeFromParent()
}
}
else
{
if !target.isAlive()
{
target.removeFromParent()
}
}
}
}
return action
}
player.attackSpeed 더블, 3.0, 그리고 괴물이다. attackSpeed도 3.5 배입니다. 내가 이해하는 한, 두 배는 초 단위의 시간을 나타낼 것입니다. 그러나 프로그램을 실행하면 사형 집행 사이에 0.5 초도 안되는 것 같습니다.