Пользовательский класс в Swift с использованием SKSpritenodes/обнаружения столкновений

В настоящее время я работаю над игрой, в которой враги появляются слева от экрана и двигаются вправо. Я хочу дать этим врагам их собственные атрибуты (здоровье, сила и т. д.). Поэтому я работаю над созданием класса Basic_fighter. У меня также есть пользовательский снайперский прицел, который пользователь использует для поражения врагов. Проблема, с которой я столкнулся, заключается в том, как получить доступ к атрибутам врагов в функции DidBeginContact, поскольку функция возвращает только два узла, а не информацию о классе. Я поставлю свой код ниже

Базовый_класс_истребителя

import Foundation
import SpriteKit

class Basic_Fighter  {

var health = Int()
var type = SKSpriteNode()

init(sk:SKSpriteNode){

    self.type = sk
    self.health = 3

}  
} 

func spawn_enemies(){

    let enemynode = SKSpriteNode(imageNamed: "Shooter")
    enemynode.size = CGSize(width: 100, height: 40)
    enemynode.position = CGPoint(x: self.size.width / 2, y: self.size.height / 2)
    enemynode.physicsBody = SKPhysicsBody(rectangleOfSize: enemynode.size)
    enemynode.physicsBody?.affectedByGravity = false
    enemynode.physicsBody?.categoryBitMask = BodyType.enemy
    enemynode.physicsBody?.contactTestBitMask = BodyType.bullet

    let enemy = Basic_Fighter(sk: enemynode)
    addChild(enemynode)
}

Я могу обнаружить контакт между пользовательской областью и противником в функции DidBeginContact, но я не знаю, как получить доступ к информации о противнике, такой как его здоровье.


person belcast1    schedule 03.01.2016    source источник
comment
просто получите доступ к функции узла тела в didbegincontact, это доступно в нескольких учебниках, затем вы просто приводите его к классу, к которому он принадлежит   -  person Knight0fDragon    schedule 04.01.2016
comment
ты когда-нибудь это понял?   -  person Mugs    schedule 22.06.2020


Ответы (1)


Я думаю, вы можете получить к нему доступ с вражеским узлом.здоровье, хотя я не уверен.

person Peter L    schedule 04.01.2016