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
实例的引用,因此可以调用该对象的成员函数。您对面向对象编程有多熟悉?也许值得买一本关于基本概念的书?