2017-09-28 10 views
0

노드가 탭되었는지 여부를 감지하고 싶습니다. 나는 UIGestureRecognizer을 사용하고 있습니다 :SpriteKit : UILongPressGestureRecognizer가 자식 노드를 탭한 경우를 감지합니다.

let longPress = UILongPressGestureRecognizer() 
    longPress.minimumPressDuration = CFTimeInterval(0.0) 
    longPress.addTarget(self, action: #selector(self.longPressGesture(longpressGest:))) 
    self.view?.addGestureRecognizer(longPress) 

그리고 호출되는 기능 :

@objc func longPressGesture(longpressGest: UIGestureRecognizer) { 

    let touchPos = longpressGest.location(in: self.view) 
    if atPoint(touchPos).name == "jump" { 
     print("jump") 
    } 

} 
내가이 도청 될 때 감지 할

내 버튼 :

let jump = SKSpriteNode(imageNamed: "Any") 
jump = CGSize(width: self.size.width*0.06, height: self.size.height*0.08) 
jump = CGPoint(x: self.size.width*0.05 - self.size.width/2, y: self.size.height*0.1 - self.size.height/2) 
jump.zPosition = 2 
jump.name = "jump" 
cameraNode.addChild(jump) 

Importend : 점프는 내 카메라 노드 노드입니다.

내 카메라 노드 :

self.camera = cameraNode 
self.addChild(cameraNode) 

let cameraNode = SKCameraNode() 
let range = SKRange(constantValue: 0) 
let cameraConstraint = SKConstraint.distance(range, to: player) 
cameraNode.constraints = [cameraConstraint] 

이 코드에서는 "점프"가 인쇄되지 않습니다. 터치 노드를 카메라 노드 나 점프 버튼 시스템과 같은 좌표계로 변환해야한다고 생각합니다. 내 질문 : 어떻게 뷰 좌표를 내 cameraNodes 좌표계로 변환 할 수 있습니까?

P. 나는 이미 작동하지 않는 전체 변환 함수를 시도했다. 어쩌면 내가 잘못했을 수도 있습니다.

답변

0

SKNodes 내가 이렇게 할 경우 convertPoint

@objc func longPressGesture(longpressGest: UIGestureRecognizer) { 

    let touchPosinView = longpressGest.location(in: self.view) 
    let touchPos = self.convertPoint(fromView:touchPosinView) 
    if atPoint(touchPos).name == "jump" { 
     print("jump") 
    } 

} 
+0

라는 방법이있다. 이 오류 메시지가 나타납니다. ** 형식 'SKView 값을 변환 할 수 없습니다?' 'CGPoint '에 대한 예상 인수 형에 ** –

+0

잘못된 값을 사용했습니다. – Knight0fDragon

+0

이미이 도구를 사용해 보았습니다.이'convertPoint (fromView : longpressGest.location (self.view)) '와는 차이가 있습니까? 이게 당신이 쓴거야? –