在sprite kit中合并两个sprite节点

时间:2014-07-27 23:35:24

标签: objective-c sprite-kit

我正在设计一个精灵工具包游戏,我想将两个精灵节点(矩形形状)合并在一起,然后将它们作为一个精灵节点进行操作并移动它们?

我一直在搜索很多,但我找不到结果

精灵套件可以吗?我该怎么办?

我会感激任何帮助,谢谢

3 个答案:

答案 0 :(得分:0)

将一个节点添加为另一个节点的子节点。如果您将其设置为node2.physicsbody.dynamic=NO;,它将作为单个节点移动。将有单独的物理实体,但您可以将它们设置为相同的类别位掩码。

此处链接的答案可能有助于表示法:How to detect contact on different areas of a physicsbody

答案 1 :(得分:0)

如果你有两个精灵节点,你只需这样做:

[firstSprite addChild:secondSprite]

答案 2 :(得分:0)

以下是我使用SpriteKit(Swift)获得所需内容的答案

  • 首先将物理应用于您的场景

示例:

self.physicsWorld.gravity = CGVectorMake(0, -9.8)
physicsWorld.contactDelegate = self
let sceneBody = SKPhysicsBody(edgeLoopFromRect: self.frame)
        sceneBody.friction = 1
        self.physicsBody = sceneBody
        self.physicsBody?.categoryBitMask = PhysicsCategory.Boarder
        self.physicsBody?.contactTestBitMask = PhysicsCategory.None
        self.physicsBody?.collisionBitMask = PhysicsCategory.Item
  • 其次,将物理应用于您想要加入的两个skspritenode

实施例

func mySpritetie1() {
        spritetie1 = SKSpriteNode(imageNamed: "img1")
        spritetie1.name = kAnimalNodeName
        spritetie1.position  = CGPoint(x: 170, y: 35)
        spritetie1.size = CGSizeMake(36, 100)
        spritetie1.physicsBody = SKPhysicsBody(rectangleOfSize: CGSizeMake(22, 100))
        spritetie1.physicsBody?.affectedByGravity = false
        spritetie1.physicsBody?.categoryBitMask = PhysicsCategory.Item
        spritetie1.physicsBody?.collisionBitMask = PhysicsCategory.Boarder
        spritetie1.physicsBody?.contactTestBitMask = PhysicsCategory.Monster
        self.addChild(spritetie1)
    }


    func mySpritetie2() {
        spritetie2 = SKSpriteNode(imageNamed: "img2")
        spritetie2.name = kAnimalNodeName
        spritetie2.position  = CGPoint(x: 250, y: 60)
        spritetie2.size = CGSizeMake(90, 79)

        spritetie2.physicsBody = SKPhysicsBody(circleOfRadius: 25)
        spritetie2.physicsBody?.affectedByGravity = false
        spritetie2.physicsBody?.categoryBitMask = PhysicsCategory.Item
        spritetie2.physicsBody?.collisionBitMask = PhysicsCategory.Boarder
        spritetie2.physicsBody?.contactTestBitMask = PhysicsCategory.Monster
        self.addChild(spritetie2)
    }
  • 第三,现在加入他们

实施例

let joint  = SKPhysicsJointFixed.jointWithBodyA(spritetie1.physicsBody!, bodyB: spritetie2.physicsBody!,
                    anchor: CGPointMake(CGRectGetMidX(spritetie1.frame), CGRectGetMinY(spritetie2.frame)))

self.physicsWorld.addJoint(joint)

这将在您给出的锚点加入两个身体。

现在,您可以使用SKAction为其中的任何一个(spritetie1或spritetie2)设置动画,另一个将动画,就好像它们是一个并且在您定义的锚点处相同。

如果您认为这个答案有帮助,请批准。希望它会帮助那里的人。

请使用这两个链接了解我的代码中的所有内容:

https://developer.apple.com/library/ios/documentation/GraphicsAnimation/Conceptual/SpriteKit_PG/Physics/Physics.html

学习模拟物理https://www.youtube.com/playlist?list=PLa41xEuH5n_pwuNm7Z3L5qxDhVE0sOEqb

的非常基础和好的教程

由于