我创建了一个名为attackButton
的方法。在这个功能里面,我这样写是为了开枪。下面的hero
是我想要一个镜头出生的节点。
func attackButton() {
shot.physicsBody = SKPhysicsBody(edgeLoopFromRect: shot.frame)
shot.position = CGPointMake(hero.position.x, hero.position.y)
shot.physicsBody?.categoryBitMask = shootingCategory
shot.physicsBody?.contactTestBitMask = enemyCategory
addChild(shot)
let run = SKAction.moveByX(2, y: 0, duration: 1)
shot.runAction(run)
}
镜头节点显示在场景中,但节点从不移动,按两次按钮后,会发生错误。我想这是因为缺少removeFromSuperview()
或removeFromParent
的代码,尽管我对此不确定。那么,为什么节点不向x方向移动?我应该在update(currentTime: CFTimeInterval)
方法中写这个吗?虽然对我来说这听起来有点太技术性了。通过在attackButton
中编写touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?)
来检测此for touch in touches {
let location = touch.locationInNode(self)
let node = self.nodeAtPoint(location)
if node.name == "attackButton" {
attackButton()
}
}
,方法是指定节点的名称,如下所示:
update(currentTime: CFTimeInterval)
如果我在attackButton
中编写此函数,该方法是如何触发的?我无法理解,因为该方法不知道我是否按attackButton
,因为此float: right !important
是一个节点,并且必须指定节点的名称,对吧?也许我所说的没有意义,但是如果你了解我,我会感激,你能给我一些能够开枪的代码吗?谢谢!