这基本上是我试图生成图像或敌人的代码,我想删除它们,但不是一次全部通过触摸一个相同的图像被触摸。图像也在移动,以防有人需要知道。
import SpriteKit
import UIKit
class GameScene: SKScene {
override func didMoveToView(view: SKView) {
let myLabel = SKLabelNode(fontNamed:"chalkduster ")
myLabel.text = "HELLO WORLD"
myLabel.fontsize = 45
myLabel.position = CGPoint(x:CGRectGetMidx(self.frame), y:CGRectGetMidy(self.frame))
self.addChild(myLabel)
}
func SpawnEnemies(){
let Enemy = SKSpriteNode(imageNamed: "Enemy.png")
let MinValue = self.size.width /8
let MaxValue = self.size.width -158
let spawnPoint = UInt32(MaxValue- MinValue)
Enemy.runAction(SKAction.sequence([action, actionDone]))
self.addChild(Enemy)
}
func touchesEnded(touches: NSSet, withEvent event: UIEvent?) {
for touch in touches {
_ = touch.locationInNode(self)
let touch = touches.anyobject() as! UITouch?
if let location = touch?.locationInNode(self)
{
for _ in self.nodeAtPoint(location)
{
if let Enemy.name == (name., "SpawnEnemies" {
Enemy.removeFromParent()
}
}
}
}
}
func update(currentTime: CFTimeInterval) {
}
通常使用大写字母作为属性名称,这被认为是一种不好的态度,你应该使用敌人而不是敌人
请尝试此方法:
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
/* Called when a touch begins */
let touch = touches.first
let positionInScene = touch!.locationInNode(self)
let touchedNode = self.nodeAtPoint(positionInScene)
if let name = touchedNode.name
{
if name == "SpawnEnemies1" { // try to get a different name for each of your enemy
Enemy.removeFromParent()
} else
if name == "SpawnEnemies666" { // this is the big boss
// do some awesome animation..
Enemy.removeFromParent()
} else
if name == "title"
{
print("title touched")
// do whatever you want with title, removing or using it
} else
if name == "credits"
{
print("credits touched")
} else
...
}
}