gpt4 book ai didi

sprite-kit - 如何在 Sprite 节点上运行两个 SKTexture Action 作为组 Action

转载 作者:行者123 更新时间:2023-12-01 01:52:54 25 4
gpt4 key购买 nike

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

    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 的推荐,我创建了一个单独的 Sprite 。因此我有两个 Sprite (相同尺寸),一个使用物理体的圆形 Sprite 和一个没有物理体的方形 Sprite 。我使用下面的代码在更新方法中更新了 Sprite 的位置。

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

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

最佳答案

像这样构造你的 Sprite :

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



}

关于sprite-kit - 如何在 Sprite 节点上运行两个 SKTexture Action 作为组 Action ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41431255/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com