Sprite kit 如何在sprite节点上作为组操作运行两个SKTexture操作
我需要在一个sprite节点上运行两个SKTexture操作。我做了以下工作:Sprite kit 如何在sprite节点上作为组操作运行两个SKTexture操作,sprite-kit,swift3,skaction,sktexture,Sprite Kit,Swift3,Skaction,Sktexture,我需要在一个sprite节点上运行两个SKTexture操作。我做了以下工作: func subSprite (_ newSprite:SKNode) { let firstImage = SKTexture(imageNamed: "firstImage") let secondImage = SKTexture(imageNamed: "secondImage") (newSprite as? SKSpriteNode)?.size = firstImag
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)
}
仅显示第二个图像。第一个没有。我这样做的主要原因是我需要运行一些其他操作,比如在第二个图像上淡出。如何使两个图像都显示出来
更新
根据达贡骑士团的推荐,我创建了一个单独的精灵。因此,我有两个精灵(相同尺寸),一个使用物理体的圆形精灵和一个没有物理体的方形精灵。我使用下面的代码更新了更新方法中精灵的位置
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
}
然后执行如下代码:
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
}
您希望两个纹理同时显示还是从第一个纹理过渡到第二个纹理?@nathan我希望两个纹理同时显示您可以有一个由两个图像组合而成的纹理(图像),或者有两个单独的
SKSpriteNode
,内森我这样做的主要原因是我希望把其中一个精灵淡出。另外,我不太同意用两个SKSpriteNode的一个字符。我不能同时运行这两个纹理吗?作为孩子或类似的东西运行动作。SKAction
的动画(使用:timePerFrame:)
动作是否有效?在给定的时间段内,应该在多个纹理之间设置动画。