Swift 将物理实体指定给自定义sprite节点类中的多个对象

Swift 将物理实体指定给自定义sprite节点类中的多个对象,swift,sprite-kit,Swift,Sprite Kit,我正在创建一个游戏,我使用场景编辑器来布置树木。我想创建一个自定义的Spritenode类,为所有树指定正确的物理属性。当我写物理时,它只适用于其中一棵树。我将所有的树都设置为Tree类的子级 class Tree: SKSpriteNode { func setTreePhysics(){ self.zPosition = 6 self.physicsBody = SKPhysicsBody(rectangleOf: s

我正在创建一个游戏,我使用场景编辑器来布置树木。我想创建一个自定义的
Spritenode
类,为所有树指定正确的物理属性。当我写物理时,它只适用于其中一棵树。我将所有的树都设置为Tree类的子级

class Tree: SKSpriteNode {

    func setTreePhysics(){
                self.zPosition = 6
                self.physicsBody = SKPhysicsBody(rectangleOf: self.size)
                self.physicsBody?.affectedByGravity = false
                self.physicsBody?.categoryBitMask = PhysicsCategory.tree
                self.physicsBody?.contactTestBitMask = PhysicsCategory.player
                self.physicsBody?.isDynamic = true

            }
}

我希望这些物理知识能应用到这个班级所有的树上。我为我的player类做了类似的事情,它工作得很好。

如果您在
player
类上实际建模了
类,那么它的行为应该是相同的。你确定要为每棵树调用
setTreePhysics
?(P.S>不要说“children”,因为这在SpriteKit中有特定的含义-他们是该类的“实例”)。如果您使用场景生成器,那么请使用场景生成器创建物理体。我想我的问题是,我没有为分配给该类的每一棵树调用setTreePhysics。我不知道如何为我在类实例中创建的场景中的每一棵树调用它。此外,我可以使用场景生成器创建物理体,但我更喜欢用代码编写。我发现通过代码应用位掩码和其他东西更容易。。。。如果代码更简单,你就不会在这里问这个问题了。之所以要在场景生成器中执行此操作,是因为不必要的代码绒毛可能是一种代码气味(如在您的案例中),请去掉绒毛,这样您的代码感染错误的机会就会减少。@kyfi13您可以在场景生成器中创建物理实体,并在代码中创建类别/碰撞/接触测试位makss。在同一位置创建节点及其物理实体是有意义的……如果您在
player
类上实际建模了
类,那么它的行为应该是相同的。你确定要为每棵树调用
setTreePhysics
?(P.S>不要说“children”,因为这在SpriteKit中有特定的含义-他们是该类的“实例”)。如果您使用场景生成器,那么请使用场景生成器创建物理体。我想我的问题是,我没有为分配给该类的每一棵树调用setTreePhysics。我不知道如何为我在类实例中创建的场景中的每一棵树调用它。此外,我可以使用场景生成器创建物理体,但我更喜欢用代码编写。我发现通过代码应用位掩码和其他东西更容易。。。。如果代码更简单,你就不会在这里问这个问题了。之所以要在场景生成器中执行此操作,是因为不必要的代码绒毛可能是一种代码气味(如在您的案例中),请去掉绒毛,这样您的代码感染错误的机会就会减少。@kyfi13您可以在场景生成器中创建物理实体,并在代码中创建类别/碰撞/接触测试位makss。在同一个地方创建节点和它们的物理实体是有意义的。。。