按钮触摸时改变Sprite纹理

时间:2015-05-21 19:44:20

标签: swift textures

我正在尝试在触摸同一场景上的按钮时更改我的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()时,它是否只出现在已经重写的旧精灵的后面?有什么方法可以保留新的精灵,只是删除留在屏幕上的旧惰性物质?

我真的只想更换图片而无法理解为什么它不能像那样工作。我有几个其他按钮可以像我编写代码一样改变变量,但由于某种原因,纹理和图像正在起作用。

谢谢。

0 个答案:

没有答案