【问题标题】:mutliple nodes in GameScene.sks with same nameGameScene.sks 中具有相同名称的多个节点
【发布时间】:2016-05-17 19:44:09
【问题描述】:

我正在尝试制作一个简单的 2D 平台游戏。我决定使用 SpriteKit 引擎提供的精灵,而不是导入精灵:在 GameScene.sks 中,我拖放了一个精灵(简单的红色方块),我称之为“墙”。我复制并粘贴了它,让玩家可以跳上两堵墙。在代码部分我写了以下几行:

var wall = SKSpriteNode()

然后,在“didMoveToView”函数中:

    wall = self.childNodeWithName("wall") as! SKSpriteNode
    wall.physicsBody = SKPhysicsBody(rectangleOfSize: wall.size)
    wall.physicsBody?.affectedByGravity = false
    wall.physicsBody?.dynamic = true
    wall.physicsBody?.allowsRotation = false
    wall.physicsBody?.pinned = true
    wall.physicsBody?.categoryBitMask = physicsCategories.wall
    wall.physicsBody?.contactTestBitMask = physicsCategories.player

因为我在类(“physicsCategories”)之外创建了一个包含各种类别位掩码的结构,所以当我检查联系人时它工作得很好:

 //CONTACT
func didBeginContact(contact: SKPhysicsContact) {
    let contactMask = contact.bodyA.categoryBitMask | contact.bodyB.categoryBitMask

    switch contactMask {
    case physicsCategories.player | physicsCategories.wall:
        isGrounded = true
    default:
        print("Some other contact")
    }
}

我的问题是这只适用于名为“墙”的 2 个精灵之一。有没有办法在代码中引用场景中具有相同名称的所有精灵?就像一个标签或类似“self.childrenNodesWithName(...)”之类的东西,我知道它并不存在。 或者也许我做错了什么? 提前谢谢你。

【问题讨论】:

  • 创建一个类似'class Wall: SKSpriteNode'的类,然后在GameScene.sks中的墙对象中引用它
  • 感谢您的提示。但我不确定如何从 GameScene.sks 中的对象引用类,您能帮帮我吗?

标签: swift sprite-kit contact skspritenode


【解决方案1】:

我没带mac,这是网络截图:

【讨论】:

  • 我的 GameScene.sks 中没有该功能。这可能是因为我没有使用最新版本的 Xcode(我使用的是 6.4)吗?如果是这种情况,那就有点问题了,因为我无法更新到 OSX El Capitan(我在这里发布了一个问题:superuser.com/questions/1063825/…,但我仍然无法解决问题)。同时我写了这段代码:
  • 对不起,我不知道从哪个版本可用
  • 哦,好吧。那你能用其他方式帮助我吗?现在我创建了一个墙壁数组,并使用“for child in self.children”检查孩子的名字是否为“wall”,然后将其附加到数组中。这种方式似乎可行,但是:A)我不确定这是“好代码” B)我很想按照你的方式去做(虽然这对我来说似乎不是一个选择)。你觉得我的方法可以吗?再次感谢您提供的帮助
  • 按你的方式工作?但是你“墙”做了一些特殊的功能?通过您的代码,您可以直接通过 sks 文件设置相同的属性
  • 是的,显然它正在工作。这堵墙有一个物理体和一些我不得不从我的评论中排除的特征,因为我没有留下任何角色。我想知道这是否是解决该项目的好方法
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多