2017-03-17 2 views
0

모양이 직사각형 인 경우 터치 위치가 정확히 맞습니다. 하지만 모양에 투명 영역 (아래 삼각형처럼)이 있으면 투명한 영역 (화면의 빈 공간)을 두 드릴 때 터치가 유효합니다.SKShapeNode의 정확한 터치 위치를 얻는 방법은 무엇입니까?

enter image description here

화면에 많은 모양이있는 경우, 사용자는 올바른 위치에 눌러 그러나 잘못된 모양을 얻을 수 있습니다. 예를 들어, 사용자가 녹색 삼각형을 선택하고 빨간색 점을 탭하려고하지만 분홍색 삼각형의 z 위치가 녹색 삼각형보다 높고 터치 위치가 분홍색 삼각형의 투명한 영역 안에 있기 때문에 선택한 모양이 분홍색 삼각형이됩니다.

var touchShapeName:String! 
var currShape: SKShapeNode! 
var shapeArr = [SKShapeNode]() 

CREAT 모양 :

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { 
     let touch = touches.first 
     let location = touch?.location(in: self) 
     touchShapeName = self.atPoint(location!).name 
     if currShape == nil{ 
      for s in shapeArr{ 
       if s.name == touchShapeName{ 
        currShape = s 
       } 
      } 
     } 
    } 
: 나는 모양을 얻기 위해 다음과 같은 코드를 사용

for i in 1...count { 
    let shape = SKShapeNode() 
    shape.path = petalPath 
    shape.strokeColor = UIColor(red: 0.9, green: 0.7, blue: 0.1, alpha: 1.0) 
    shape.lineWidth = 0.1 
    shape.glowWidth = 0.1 
    shape.fillColor = UIColor(red: getRandomColor(245, 255), green: getRandomColor(190, 210), blue: getRandomColor(10, 15), alpha: 0.98) 
    shape.name = "\(i)" 
    shape.position = CGPoint(x: frame.midX + CGFloat(30 * i), y:frame.midY + 60) 
    addChild(shape) 
shapArr.append(shape) 
} 

여기

enter image description here

시작 모양을 만들 수있는 코드입니다

이제 색상 영역을 탭하면 모양을 만들고 이동할 수 있습니다. 문제는 위의 투명 영역으로 도형을 두드리는 것은 내가 위에서 설명한 것처럼 잘못된 모양을 가질 수 있다는 것입니다.

올바른 코드를 작성합니까? 정확한 위치를 얻는 다른 해결책이 있습니까?

Thx.

+1

예, 정확한 위치를 얻는 데 올바른 코드입니다. 실제 이미지를 클릭하지 않았을지라도 나는 녹색 이미지를 의미하지만 화면에 따라 클릭 된 부분은 정확한 포인트를 제공합니다. – Poles

+0

@poles와 동의하십시오. 또한 필요한 경우 녹색 모양과 관련된 터치 좌표가 SKNode의 convert (_ : to :) 메서드를 참조하십시오. –

+0

@AliBeadle은 convert (_ : to :) 메서드를 사용하여이를 가져올 수 있습니까? 나는 시도했다. currShape = SKShapeNode() convert (location !, to : currShape) print (currShape.name), 그러나 그것은 nil을 출력했다. – jdleung

답변

0

여기 모양 노드를 잘못 사용하고 있다고 생각합니다. 사각형 모양을 선택하면서 삼각형을 조작하려고합니다. 삼각형 모양을 원한다면 일반 경로 대신 적절한 경로를 사용해야합니다. 삼각형 모양으로 삼각형을 나타내면 터치 위치 감지가 자동으로 고정됩니다.

+0

삼각형 모양이 문제를 설명하기위한 예이며 실제로 모양은 여러 종류입니다. 나는 셰이프를 그렸습니다, 내가 직면하고있는 것은 상체의 투명한 영역 아래에서 셰이프를 선택하는 방법입니다. – jdleung

관련 문제