3

내 스프라이트 노드의 크기를 조정하기 위해 핀치 제스처 인식기를 구현하려고합니다. 나는 그 일을 위해서 setScale(sender.scale)을 사용하고 있지만, 손가락을 들어서 다시 집어 넣으려고 할 때마다 내 스프라이트가 다시 집게되기 전에 1.0으로 다시 설정됩니다.핀치 제스추어를 사용하여 스프라이트 키트 노드 크기 조정

내가 원하는 것은 화면을 다시 집어 넣을 때 스프라이트 크기가 그대로 유지되고, 집게 될 때 스프라이트 크기가 그대로 유지되거나 커지면 커질 수 있기 때문에 큰 크기로 만들기 위해 집을 비틀 수 있습니다. 가능한 한 작습니다. 이 작업을 수행하는 방법?

여기 내 코드가 있습니다.

var pizza = PizzaSprite() 

override func didMove(to view: SKView) { 

    let pinchGesture = UIPinchGestureRecognizer(target: self, action: #selector(self.handlePinchFrom(_:))) 

    pizza = PizzaSprite(size: self.frame.width * 0.25) 

    self.addChild(pizza) 

    self.view?.addGestureRecognizer(pinchGesture) 

} 

func handlePinchFrom(_ sender: UIPinchGestureRecognizer) { 

    if sender.state == .began { 

    } else if sender.state == .changed { 

     pizza.setScale(sender.scale) 

    } else if sender.state == .ended { 

    } 

} 

여기 지금 일주일 동안이에서 일했다, 그래서 PizzaSprite 클래스를

init() { 
    let texture = SKTexture(imageNamed: "demPizza") 
    super.init(texture: texture, color: UIColor.clear, size: texture.size()) 
} 

init(size: CGFloat) { 
    let texture = SKTexture(imageNamed: "demPizza") 
    super.init(texture: texture, color: UIColor.clear, size: CGSize(width: size, height: size)) 
} 


required init?(coder aDecoder: NSCoder) { 
    fatalError("init(coder:) has not been implemented") 
} 

답변

6

있어, 한 번 포기하고 만 대신 팬 사용하지만, 내가 핀치를 사용하여 다시 시도했다. 이 질문을 게시 한 지 몇 분 후에 답변을 얻었습니다 ....

누군가가 이것을 필요로 할 때를 대비하여 여기에 올리겠습니다.

func handlePinchFrom(_ sender: UIPinchGestureRecognizer) { 

    let pinch = SKAction.scale(by: sender.scale, duration: 0.0) 

    pizza.run(pinch) 
    sender.scale = 1.0 

} 
관련 문제