【发布时间】:2017-05-26 10:59:49
【问题描述】:
下面是我正在制作的一个简单游戏的部分代码。在游戏中,你的手指围绕着屏幕一个球在你的手指下方。然后每 10 秒添加一个球,球会跟随你的球。我有一个 SKAaction,它每 10 秒调用一次我的添加敌人函数,它会产生敌人。问题是我不能让添加敌人功能更新每一帧,因为如果它更新每一帧,SKAction 不会让我调用它,所以我不知道该怎么做才能添加球每 10 秒,让那个球跟踪你的位置。因为目前它只跟踪添加球时的初始位置。感谢任何帮助,谢谢。
import SpriteKit
import GameplayKit
class GameScene: SKScene {
var me = SKSpriteNode()
override func didMove(to view: SKView) {
me = self.childNode(withName: "me") as! SKSpriteNode
let border = SKPhysicsBody (edgeLoopFrom: self.frame)
border.friction = 0
self.physicsBody = border
run(SKAction.repeatForever(SKAction.sequence([SKAction.run(createEnemy), SKAction.wait(forDuration: 10.0)])))
}
func createEnemy () {
let enemy = SKSpriteNode(imageNamed: "ball 1")
enemy.name = "enemy"
enemy.position = CGPoint(x:667, y: -200)
enemy.run(SKAction.moveTo(x: me.position.x, duration: 2))
enemy.run(SKAction.moveTo(y: me.position.y, duration: 2))
enemy.zPosition = +1
addChild(enemy)
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
for touch in touches{
let location = touch.location(in: self)
me.run(SKAction.moveTo(x: location.x, duration: 0))
me.run(SKAction.moveTo(y: location.y, duration: 0))
}
}
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
for touch in touches{
let location = touch.location(in: self)
me.run(SKAction.moveTo(x: location.x, duration: 0))
me.run(SKAction.moveTo(y: location.y, duration: 0))
}
}
override func update(_ currentTime: TimeInterval) {
}
}
【问题讨论】:
-
your previous question 中尚未回答的问题?
-
不,我已经使用了人们之前告诉我的所有信息来构建它,除了这个之外一切正常
-
一般你不应该使用
SKAction来实现类似homing missile的东西如果你需要每帧更新一些东西,你可以使用SKScene的update:方法。因此,如果配置正确,您正在做的事情可能会奏效,但仍然不是实现您想要的东西的高效方式。
标签: ios swift sprite-kit