【发布时间】:2016-07-13 20:09:25
【问题描述】:
我正在创建一个简单的精灵套件游戏,它将玩家定位在屏幕的左侧,而敌人则从右侧接近。由于玩家可以上下移动,我希望敌人“聪明地”调整他们朝向玩家的路径。
我尝试在玩家移动时删除和重新添加 SKAction 序列,但下面的代码导致敌人根本不显示,可能是因为它只是在每次帧更新时添加和删除每个动作,所以他们从来没有移动的机会。
希望获得一些关于创建“智能”敌人的最佳实践的反馈,这些敌人会随时向玩家的位置移动。
这是我的代码:
func moveEnemy(enemy: Enemy) {
let moveEnemyAction = SKAction.moveTo(CGPoint(x:self.player.position.x, y:self.player.position.y), duration: 1.0)
moveEnemyAction.speed = 0.2
let removeEnemyAction = SKAction.removeFromParent()
enemy.runAction(SKAction.sequence([moveEnemyAction,removeEnemyAction]), withKey: "moveEnemyAction")
}
func updateEnemyPath() {
for enemy in self.enemies {
if let action = enemy.actionForKey("moveEnemyAction") {
enemy.removeAllActions()
self.moveEnemy(enemy)
}
}
}
override func update(currentTime: NSTimeInterval) {
self. updateEnemyPath()
}
【问题讨论】:
-
“不能正常工作”不是一个技术术语。我们需要有关您的期望及其不当行为的完整信息。
-
@Rob 抱歉含糊不清,现在上面的代码不会导致敌人出现。可能是因为它只是在每次帧更新时添加和删除每个动作,所以他们永远没有机会移动。谢谢!
-
虽然您已经得到一个标记为正确的答案,但我强烈建议您查看 GameplayKit (ios 9 API)。它为更灵活的游戏设计提供了工具,包括寻路和寻找敌人,这使您想要的事情变得更好、更容易。网上有一些关于这个的很好的教程。 raywenderlich.com/119959/… 和 code.tutsplus.com/tutorials/…
标签: swift sprite-kit skaction