Ich erstelle ein Spiel und bin dabei, eine erfolgreiche Physikkontaktmethode zu erstellen.So rufen Sie eine Methode mit mehreren Eingabeparametern in einer anderen Methode auf
func bulletCollisionWithEnemy1(enemy1: SKSpriteNode, bullet1: SKSpriteNode){ // my enemy1 and bullet are defined in my game scene
score += 1
scoreLabel.text = "\(score)"
bullet1.removeFromParent()
hitCount++
}
func enemy1Hit (enemy1:Enemy1) { //my enemy1 is defined in my game scene and my Enemy1 is a separate SKSNode class i have created containing physics properties and vars ect.
if (enemy1.hit() == true) {
//enemy hit animation
}else{
//for animations
}
}
hier ist, wo ich die Physik Kontakt definieren
func didBeginContact(contact: SKPhysicsContact) {
let firstBody : SKPhysicsBody = contact.bodyA
let secondBody : SKPhysicsBody = contact.bodyB
if ((firstBody.categoryBitMask == PhysicsCategory.bullet1) &&
(secondBody.categoryBitMask == PhysicsCategory.enemy1) ||
(firstBody.categoryBitMask == PhysicsCategory.enemy1) &&
(secondBody.categoryBitMask == PhysicsCategory.bullet1)) {
if let firstNode = firstBody.node as? SKSpriteNode, secondNode = secondBody .node as? SKSpriteNode {
bulletCollisionWithEnemy1((firstNode), bullet1: (secondNode))
}
, wo mein Problem ist, ich nicht weg zu nennen meine enemy1hit() Funktion gibt. Meine hit() - Funktion ist in meiner Enemy1-Klasse definiert, daher muss ich in den Parametern mein Enemy1 aufrufen und meine Trefferklasse in meiner Kollision mit der Bullet-Klasse aufrufen.
müssen Sie den secondNode nicht in didBeginContact aufrufen? @george Grün? – gkolman
und ich habe meinen Score und mein Ergebnis in meiner gameScene.swift-Datei definiert, also soll ich mein Ergebnis in meiner Klasse "enemy1" definieren? Das wäre ein bisschen schmerzhaft und könnte später Probleme mit dem Speichern von Punkten oder Punkten verursachen. – gkolman
@gkolman Nein, wenn es gut ist, global, da es nicht spezifisch für eine Entität ist. Der Treffer ist jedoch spezifisch für einen Gegner. Ich bin mir nicht sicher, was du mit deiner ersten Frage meinst? Vielleicht könnten Sie mich mit der vollständigen Klassendefinition verbinden, damit ich besser sehen kann, was Sie erreichen wollen? –