我如何 运行 精灵节点上的两个 SKTexture 动作作为一个组动作

How can I run two SKTexture Actions on a sprite node as a group action

我需要在一个 sprite 节点上 运行 两个 SKTexture 动作。我做了以下事情:

    func subSprite (_ newSprite:SKNode) {

    let firstImage = SKTexture(imageNamed: "firstImage")
    let secondImage = SKTexture(imageNamed: "secondImage")

    (newSprite as? SKSpriteNode)?.size = firstImage.size()

    mainSprite?.sprite.physicsBody = SKPhysicsBody(texture: firstImage, size: firstImage.size())
    mainSprite?.sprite.physicsBody!.categoryBitMask = mainSpriteCategory
    mainSprite?.sprite.physicsBody?.allowsRotation = false


    mainSprite!.sprite.physicsBody?.contactTestBitMask = enemyOneCategory | enemyTwoCategory | enemyThreeCategory

    mainSprite!.sprite.physicsBody?.collisionBitMask =  enemyOneCategory | enemyTwoCategory | enemyThreeCategory

    let firstImageAction = SKAction.setTexture(firstImage)
    let secondImageAction = SKAction.setTexture(secondImage)
    let textureGroupAction = SKAction.group([firstImageAction, secondImageAction ])

    newSprite.run(textureGroupAction)

}

只出现第二张图片。第一个没有。我这样做的主要原因是我需要 运行 一些其他操作,例如在 secondImage 上淡出。我怎样才能让两个图像都出现?

更新

根据KnightOfDragon 的推荐,我创建了一个单独的精灵。因此我有两个精灵(相同尺寸),一个使用物理体的圆形精灵和一个没有物理体的方形精灵。我使用下面的代码在更新方法中更新了精灵的位置。

mainSprite!.squareSprite.position = mainSprite!.circleSprite.position

尽管精灵具有相同的位置(我在几个地方记录了它们的位置以确保这一点),但当与另一个物理物体发生碰撞时,精灵似乎会在某个随机方向上偏移。当我显着降低 mainSprite 的速度(这不是我打算做的)时,偏移停止或减少。我相信这是与导致偏移的另一个物理体碰撞的影响速度。我该如何解决这个问题?

像这样构造你的精灵:

var mainSprite : SKNode!
var subSprite1 = SKSpriteNode(texture:SKTexture(imageNamed: "firstImage"))
var subSprite2 = SKSpriteNode(texture:SKTexture(imageNamed: "secondImage"))

mainSprite.addChild(subSprite1)
mainSprite.addChild(subSprite2)

然后像这样执行您的代码:

func initSprite (_ newSprite:SKNode) {


    (newSprite as? SKSpriteNode)?.size = firstImage.size()

    mainSprite!.physicsBody = SKPhysicsBody(texture: firstImage, size: firstImage.size())
    mainSprite!.physicsBody!.categoryBitMask = mainSpriteCategory
    mainSprite!.physicsBody!.allowsRotation = false


    mainSprite!.physicsBody!.contactTestBitMask = enemyOneCategory | enemyTwoCategory | enemyThreeCategory

    mainSprite!.physicsBody!.collisionBitMask =  enemyOneCategory | enemyTwoCategory | enemyThreeCategory



}