gpt4 book ai didi

swift - 在 Swift 4 中设置 SKSpriteNode 的位置

转载 作者:搜寻专家 更新时间:2023-11-01 07:08:46 27 4
gpt4 key购买 nike

所以在下面,我有一个 SKSpriteNode 图像,我还使用 Texture Atlas 和 SKAction.animate 对我的纹理数组之一进行动画处理。当我第一次运行该应用程序时,图像直接显示在屏幕中央,并按应有的方式进行动画处理。但是当我尝试通过 CGPoint 定位节点时,它并没有移动。我什至尝试过,“CGPoint(x: 0, y: -self.height/2)” 因为我希望图像显示在屏幕的最底部中心,但没有工作。有时,当我在 iPhone 上运行该应用程序时,图像有时甚至不存在,因此我重新运行了该应用程序。我一定是做错了什么,但我的代码似乎是正确的?

class GameScene: SKScene {

let background = SKSpriteNode(texture:SKTexture(imageNamed: "background"))

var person = SKSpriteNode()

let atlas = SKTextureAtlas(named: "people")
var textureArray = [SKTexture]()

override func didMove(to view: SKView) {
background.position = CGPoint(x: 0, y: 0)
self.background.zPosition = 0.0
self.addChild(background)

person = SKSpriteNode(imageNamed: "person1.png")
person.position = CGPoint(x: self.frame.size.width, y: self.frame.size.height/2)
self.person.zPosition = 1.0
person.size = CGSize(width: 150, height: 129)
person = SKSpriteNode(imageNamed: atlas.textureNames[0])

for i in 1...atlas.textureNames.count {
let Name = "person\(i).png"
textureArray.append(SKTexture(imageNamed: Name))
}

let myAnimation = SKAction.animate(with: textureArray, timePerFrame: 0.1)
self.addChild(person)
person.run(SKAction.repeatForever(myAnimation))

}

override func update(_ currentTime: TimeInterval) {

}
}

最佳答案

我还没有对此进行测试,但我想我知道问题出在哪里。

您在代码的不同位置有这三行:

var person = SKSpriteNode()

person = SKSpriteNode(imageNamed: “person1.png")

person = SKSpriteNode(imageNamed: atlas.textureNames[0])

所有这些行都创建了一个新的 SKSpriteNode 并为该新 Sprite 节点分配了一个引用,该节点由名为person 的变量保存。

在您的代码中,您更改了第二个 person 节点的位置。然后创建第三个 person 节点。这意味着您之前设置的位置不会对第 3 个 person 节点产生任何影响,因为只有第 2 个 person 位置发生了变化。

我建议只创建一个 person 节点,然后设置它的位置、zposition、大小等。要解决这个问题,请考虑替换 var person = SKSpriteNode() 使用 var person: SKSpriteNode?。然后也将行 person = SKSpriteNode(imageNamed: “person1.png”) 替换为 person = SKSpriteNode(imageNamed: atlas.textureNames[0]),当然删除person = SKSpriteNode(imageNamed: atlas.textureNames[0]) 行发生在 for 循环之前。

由于 person 现在被定义为可选项,现在需要将其作为 person? 访问,或者在某些情况下作为 person! 访问你确定它不能为零的地方。 Xcode 会告诉你在哪里需要添加额外的 ?

希望这对您有所帮助!

关于swift - 在 Swift 4 中设置 SKSpriteNode 的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46267059/

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