【问题标题】:SKSpriteNode Automated movementSKSpriteNode 自动移动
【发布时间】:2016-03-15 00:57:39
【问题描述】:

我正在制作我的第一款游戏,它将类似于马里奥。 (使用快速)

已经开始制造一些敌人,他们需要左右移动并响应碰撞,我可以在我的玩家节点上执行此操作,因为我从 SKScene 更新函数调用 player.update() 函数,

override func update(currentTime: NSTimeInterval)
{
    player.update()
}

我的问题是:

对于enemyX,我怎样才能让节点更新,因为 SKSpriteNode 没有可以从我的游戏场景中被覆盖的默认更新功能

我真的不想写这样的东西:

override func update(currentTime: NSTimeInterval)
{
    player.update()
    enemyX.update()
    enemyY.update()
    enemy001.update()
    ...
    enemy100.update
}

你明白我的意思吗,我该如何解决这个问题,SKSpriteNode 需要是一个不同的类吗?

也许行动?

let moveLeft = SKAction.moveByX( 200, y:0, duration: 5)
self.runAction(moveLeft, completion: {
    print("----> move left Complete")
})

谢谢。

【问题讨论】:

  • 只是在想我可以使用永远运行的功能,即self.runAction(SKAction.repeatActionForever( SKAction.runBlock({ self.enemyLogic() })));
  • 通常你决定你想让你的敌人移动到哪里,然后打电话给SKAction.moveToSKAction.moveToXSKAction.moveToY

标签: swift sprite-kit swift2


【解决方案1】:

你继承了SKSpriteNode 和该类中的更新方法。然后在你的场景中的更新方法中,你完全按照你说的去做

player.update()
enemy.update()

等等

除非敌人的行为极其简单,否则不建议使用 SKAction。

【讨论】:

  • 所以我想我将所有生成的敌人添加到一个数组中,然后遍历该数组,如果敌人的位置超过玩家 X 或距离玩家 X 位置太远,则跳过该更新- 差不多是这样吗?是否有任何内置函数可以帮助解决这个问题? - 谢谢
  • 是的,我会遍历敌人的数组,并为每个人调用更新,为我的特定游戏做任何我需要做的事情
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多