Я создаю игру, в которой игрок должен коснуться вражеских спрайтов, чтобы уничтожить их. Плеер всегда находится в центре экрана. Существует несколько различных типов врагов. Сначала я проверяю идею приложения с двумя типами врагов.
вот код, который создает врагов.
func createEnemy(type:Enemies, forSpawner spawner: Int) -> SKSpriteNode?
{
switch type {
case .diamond:
enemySprite = SKSpriteNode(imageNamed: "Diamond")
enemySprite.setScale(0.5)
enemySprite.color = UIColor.green
enemySprite.colorBlendFactor = 1
enemySprite.name = "enemy"
let location = targetLocation
let action = SKAction.move(to: CGPoint(x: location.x, y: location.y), duration: 2.0)
enemySprite.run(action)
case .diamondSolid:
enemySprite = SKSpriteNode(imageNamed: "DiamondSolid")
enemySprite.setScale(0.5)
enemySprite.color = UIColor.purple
enemySprite.colorBlendFactor = 1
enemySprite.name = "enemySolid"
let location = targetLocation
let action = SKAction.move(to: CGPoint(x: location.x, y: location.y), duration: 1.0)
enemySprite.run(action)
}
guard let enemyPosition = spawnArray?[spawner].position else {return nil}
let dx = targetLocation.x - enemyPosition.x
let dy = targetLocation.y - enemyPosition.y
let angle = atan2(dy,dx)
enemySprite.position.x = enemyPosition.x
enemySprite.position.y = enemyPosition.y
enemySprite.physicsBody = SKPhysicsBody(rectangleOf: CGSize(width: enemySprite.size.width, height: enemySprite.size.height))
enemySprite.physicsBody?.categoryBitMask = enemyCategory
enemySprite.zRotation = angle - 90 * degreesToRadians
return enemySprite
}
и функция касания
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
if let touch = touches.first {
let location = touch.previousLocation(in: self)
let node = self.nodes(at: location).first
if node?.name == "enemy"{
node?.removeFromParent()
}
}
}
Я думаю, что мне нужно сделать, это отправить местоположение из события касания и отправить его в новую функцию, которая уничтожает врага с некоторой добротой частиц эмиттера, чтобы дать игроку понять, что форма мертва. В зависимости от типа, он будет либо уничтожать и добавлять к счету, либо уничтожать, добавлять к счету и порождать ряд других врагов и перемещать их назад на определенную величину, прежде чем перемещать их к targetLocation. Любая помощь о том, как я мог пойти об этом?