【问题标题】:How to change the clickable area of a SpriteKit Sprite Node from rectangle to circle?如何将 SpriteKit Sprite 节点的可点击区域从矩形更改为圆形?
【发布时间】:2021-02-23 20:26:02
【问题描述】:

我的菜单屏幕上有一个播放按钮,但它检测到整个矩形区域中的触摸,而不仅仅是圆形区域。有没有办法在 xcode 中将可点击的边界更改为一个圆圈?

或者我是否必须在初始化或函数中以编程方式进行:

        override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {}

【问题讨论】:

  • 发布原始按钮图像。你确定图片是透明的吗?
  • 这是按钮图像,你可以看到它是透明的,它只是在xcode上被选中以显示边界。

标签: ios swift sprite-kit geometry skspritenode


【解决方案1】:

只需以编程方式将其添加到 GameScene。

   var playButton: SKSpriteNode!



   override func didMove(to view: SKView) {
        
         playButton = SKSpriteNode(imageNamed: "playButton")
         playButton.name = "playButton"
         playButton.position = CGPoint(x: self.frame.midX , y: self.frame.midY)
         playButton.zPosition = 0
         playButton.alpha = 1

         addChild(playButton)
   }



  override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    guard let touch = touches.first else {
        return
    }
    
    let pos = touch.location(in: self)
    let node = self.atPoint(pos)

    if node.name == "playButton"{

       //Do Something
    }
     

  }

【讨论】:

  • 做到了,但图像上的边界仍然相同,所以如果我选择该图像中拐角处的蓝色区域并且我没有接触圆圈,但它仍然像被点击一样注册.我需要的是让这些边界在一个圆圈而不是一个矩形中。那么它会起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-17
  • 2010-10-26
  • 2013-07-25
  • 1970-01-01
  • 2010-10-31
  • 2020-05-16
相关资源
最近更新 更多