我正在尝试在触摸同一场景上的按钮时更改我的Sprites纹理。我试图使用的代码非常简单和基本。
Class PlayScene: SKScene, SKPhysicsContactDelegate {
var hero = SKSpriteNode(imageNamed: "Hero")}
if self.nodeAtPoint(location) == self.button3 {
hero = SKSpriteNode(imageNamed: "Hero2")
self.button3value++
} if (button3value % 2 == 0){
hero = SKSpriteNode(imageNamed: "Hero")}
显然还有其他代码实际上涉及精灵的物理和质量,但我认为这是最相关的代码。
使用此代码时会发生什么事情非常奇怪,我无法确切地知道发生了什么。当" button3"按下,精灵不会改变纹理,只会失去一些物理特性。它仍然在屏幕上但没有旋转,在点击背景时没有参与跳跃功能,但仍保留其碰撞检测。
现在,如果我加入
Class PlayScene: SKScene, SKPhysicsContactDelegate {
var hero = SKSpriteNode(imageNamed: "Hero")}
if self.nodeAtPoint(location) == self.button3 {
hero = SKSpriteNode(imageNamed: "Hero2")
addChild(hero)
self.button3value++
} if (button3value % 2 == 0){
hero = SKSpriteNode(imageNamed: "Hero")}
然后,似乎是一个新的精灵出现了旧精灵的所有特征和属性,同时也有正确的图像(这就是我想要的,旧精灵的相同特征,但是新图像)。但是,旧的惰性精灵仍在屏幕上。
我无法弄清楚为什么SpriteKit就像这样。为什么有些物理属性会在单击按钮后变为惰性时保留?为什么当我为同一个声明的精灵执行addChild()时,它是否只出现在已经重写的旧精灵的后面?有什么方法可以保留新的精灵,只是删除留在屏幕上的旧惰性物质?
我真的只想更换图片而无法理解为什么它不能像那样工作。我有几个其他按钮可以像我编写代码一样改变变量,但由于某种原因,纹理和图像正在起作用。
谢谢。