【发布时间】:2017-01-02 17:55:05
【问题描述】:
我需要在一个精灵节点上运行两个 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 的速度(这不是我打算做的)时,偏移量停止或减少。我相信这是与另一个物理物体碰撞的撞击速度导致了偏移。我该如何解决这个问题?
【问题讨论】:
-
您希望两个纹理同时显示还是从第一个纹理过渡到第二个?
-
@nathan 我希望同时显示两个纹理
-
你可以有一个纹理(图像)是两个图像的组合,或者有两个单独的
SKSpriteNode's,每个图像一个。 -
@nathan 我这样做的主要原因是希望让其中一个精灵淡出。另外,我对一个角色使用两个 SKSpriteNode 不太满意。我不能同时运行两个 SKTexture 吗?像孩子一样运行动作或类似的东西。
-
SKAction的animate(with:timePerFrame:)操作会起作用吗?这应该在给定时间段内的多个纹理之间进行动画处理。
标签: sprite-kit swift3 skaction sktexture