SpriteNode位置与触摸位置

时间:2017-01-29 05:49:25

标签: swift xcode skspritenode touchesbegan imagenamed

所以我正在使用带有图像的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

2 个答案:

答案 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方法中获得了所有初始图像内容,而不是我创建了一个新方法,我已经使用了另一个功能来启动游戏并在那里获得初始图像,现在一切正常。