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 

} 
関連する問題