Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在另一个方法中调用具有多个输入参数的方法_Ios_Xcode_Swift_Parameters - Fatal编程技术网

Ios 如何在另一个方法中调用具有多个输入参数的方法

Ios 如何在另一个方法中调用具有多个输入参数的方法,ios,xcode,swift,parameters,Ios,Xcode,Swift,Parameters,我正在创造一个游戏,我一直在创造一个成功的物理接触方法 func bulletCollisionWithEnemy1(enemy1: SKSpriteNode, bullet1: SKSpriteNode){ // my enemy1 and bullet are defined in my game scene score += 1 scoreLabel.text = "\(score)" bullet1.removeFromParent () hitCou

我正在创造一个游戏,我一直在创造一个成功的物理接触方法

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
    }
}
这里是我定义接触物理的地方

 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))
        }

我的问题是找不到一个方法来调用我的enemy1hit()函数。My hit()函数是在My Enemy1类中定义的,因此我必须在参数中调用My Enemy1,并在与bullet类的冲突中调用My hit类

基于类
Enemy1
SKSpriteNode
的子类的假设,我认为您需要的是:

class Enemy1: SKSpriteNode {

    func bulletCollision(bullet1: SKSpriteNode){ // my enemy1 and bullet are defined in my game scene 
        score += 1
        scoreLabel.text = "\(score)"
        bullet1.removeFromParent ()
        hitCount++ 
    }

    func hit() { //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
        }
    }

}
无论您的代表在何处:

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? Enemy1, secondNode = secondBody .node as? SKSpriteNode {
            firstNode.bulletCollision(secondNode)
            firstNode.hit()
        }
    }
}

请记住,
bulletCollision
hit
方法是
Enemy1
对象的成员,因此可以在对象上调用,而不必将对象传递给它们。

基于类
Enemy1
SKSpriteNode
的子类的假设,我认为您需要的是:

class Enemy1: SKSpriteNode {

    func bulletCollision(bullet1: SKSpriteNode){ // my enemy1 and bullet are defined in my game scene 
        score += 1
        scoreLabel.text = "\(score)"
        bullet1.removeFromParent ()
        hitCount++ 
    }

    func hit() { //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
        }
    }

}
无论您的代表在何处:

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? Enemy1, secondNode = secondBody .node as? SKSpriteNode {
            firstNode.bulletCollision(secondNode)
            firstNode.hit()
        }
    }
}

请记住,
bulletCollision
hit
方法是
Enemy1
对象的成员,因此可以在对象上调用,而不必将对象传递给它们。

您不必在didBeginContact中调用第二个节点吗@乔治·格林?我在GameSecene.swift文件中定义了我的分数和分数latel,所以你想让我在enemy1类中定义我的分数?这将是一种痛苦,并且可能会导致以后在保存分数或数据时出现问题points@gkolman如果分数在全球范围内很好,则为否,因为它不是特定于实体的。然而,被击中是特定于敌人的。我不知道你的第一个问题是什么意思?也许您可以将我链接到完整的类定义,这样我就可以更好地了解您想要实现的目标了?当我的联系人方法在我的GameSecene类和我的hit()中时,我应该如何在我的联系人方法中调用我的hit()函数函数在my Enemy1类@George中定义Green@gkolman我假设
didBeginContact
在您的GameSecene类中,因此您可以调用
hit
方法,因为您有对
Enemy1
实例的引用,因此可以调用该对象的成员函数。您对面向对象编程有多熟悉?也许值得买一本关于基本概念的书?你不必在didBeginContact中调用第二个节点@乔治·格林?我在GameSecene.swift文件中定义了我的分数和分数latel,所以你想让我在enemy1类中定义我的分数?这将是一种痛苦,并且可能会导致以后在保存分数或数据时出现问题points@gkolman如果分数在全球范围内很好,则为否,因为它不是特定于实体的。然而,被击中是特定于敌人的。我不知道你的第一个问题是什么意思?也许您可以将我链接到完整的类定义,这样我就可以更好地了解您想要实现的目标了?当我的联系人方法在我的GameSecene类和我的hit()中时,我应该如何在我的联系人方法中调用我的hit()函数函数在my Enemy1类@George中定义Green@gkolman我假设
didBeginContact
在您的GameSecene类中,因此您可以调用
hit
方法,因为您有对
Enemy1
实例的引用,因此可以调用该对象的成员函数。您对面向对象编程有多熟悉?也许值得买一本关于基本概念的书?