gpt4 book ai didi

swift - 如何使 spritekit 节点从一张图片变为另一张图片

转载 作者:行者123 更新时间:2023-11-28 13:12:38 25 4
gpt4 key购买 nike

我有一个带有代码的 SKSpriteNode 图像:

let Drake1 = SKSpriteNode(imageNamed: "Drake1")
Drake1.position = CGPoint(x:self.frame.size.width/3, y:self.frame.size.height - 230)
Drake1.zPosition = 2
addChild(Drake1)

//drake movement
let moveRight = SKAction.moveByX(frame.size.width/2.8, y: 0, duration: 2)
let moveLeft = SKAction.moveByX(-frame.size.width/2.8, y: 0, duration: 2)
let moveBackAndForth = SKAction.repeatActionForever(SKAction.sequence([moveRight, moveLeft]))
Drake1.runAction(moveBackAndForth)

我想做的是,当图像向右移动时,我想用不同的 SKSpriteNode 图像替换图像,当它向左移动时,我想使用原始图像,并永远重复这个.我正在为这个代码应该是什么而苦苦挣扎。

最佳答案

SpriteKit 带有一个 SKAction,setTexture,可以相对轻松地即时更改 Sprite 的纹理。您可以为每个图像创建一个内联 SKTexture 对象,在 SKActions 中使用它们,并将它们添加到您的序列循环中,如下所示:

let moveRight = SKAction.moveByX(frame.size.width/2.8, y: 0, duration: 2)
let moveLeft = SKAction.moveByX(-frame.size.width/2.8, y: 0, duration: 2)
let texRight = SKAction.setTexture(SKTexture(imageNamed: "Drake1r"))
let texLeft = SKAction.setTexture(SKTexture(imageNamed: "Drake1l"))
let moveBackAndForth = SKAction.repeatActionForever(SKAction.sequence([texRight, moveRight, texLeft, moveLeft]))
Drake1.runAction(moveBackAndForth)

希望这对你有用!请注意,如果纹理大小不同,您必须将 resize: Bool 添加到 setTexture 的参数中。

关于swift - 如何使 spritekit 节点从一张图片变为另一张图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30768275/

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