所以我正在使用带有图像的spritenode而我没有设置它的位置。有趣的是我设置它的位置有问题,所以我没有,默认设置为页面中心(显而易见的原因),最终完美。所以现在在我的touchesbegan方法中,我正在寻找改变所述图像,如果原始图像被按下,那么我正在检查触摸的位置是否等于(图像的)节点的位置。然后,如果这是真的,我将其替换为新图像,称为“nowaves”。
for touch in touches
{
let location = touch.location(in: self)
if (location == audioPlaying.position)
{
audioPlaying = SKSpriteNode(imageNamed: "nowaves")
}
else
{
你们认为我需要读它吗?好吧,因为我问我测试它没有结果。这就是我试过的:
audioPlaying.size = CGSize(width: frame.size.width / 13, height: frame.size.height / 20)
addChild(audioPlaying)
如果有人知道问题是什么我会喜欢一些反馈,谢谢你:D
答案 0 :(得分:0)
默认情况下,position
属性返回节点中心的坐标。换句话说,除非你触及精灵的确切中心,否则if (location == audioPlaying.position)
永远不会成立。但是,您应该知道,触摸节点的确切中心点几乎是不可能的。
所以我们使用另一种方法。我们只需要检查触摸的节点是否是您想要的节点。
let touchedNode = self.nodes(at: touch.location(in: self)).first
if touchedNode == audioPlaying {
// I think setting the texture is more suitable here, instead of creating a new node.
audioPlaying.texture = SKTexture(imageNamed: "nowaves")
}
答案 1 :(得分:0)
要添加到@sweeper, 我在scenedidLoad方法中获得了所有初始图像内容,而不是我创建了一个新方法,我已经使用了另一个功能来启动游戏并在那里获得初始图像,现在一切正常。