2
這是我的第一篇文章。我到處尋找答案,看起來我做得對,但它似乎沒有工作。Swift SKAction.waitForDuration太快執行
我想在Swift中的兩個節點之間執行戰鬥序列。在每個節點攻擊之後,它應該在再次攻擊之前等待其指定的攻擊速度持續時間。
這裏是我的戰鬥序列碼:
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。據我所知,double會代表幾秒鐘的時間,然而,當我運行我的程序時,似乎在執行之間不到半秒。