0
今日アニメーション中にSpriteKit
の位置に問題があります。アニメーション中のUIImageViewの位置
@IBAction func MoveTDButton(_ sender: UIButton) {
animationForPlane = UIViewPropertyAnimator(duration: 0.5, curve: .easeIn, animations: {
if sender.tag == 1 {
self.ship.center.x = sender.frame.origin.x + sender.frame.size.width - (self.ship.frame.size.width/2)
self.ship.image = #imageLiteral(resourceName: "shipright")
print(self.ship.center.x)
}else{
self.ship.center.x = sender.frame.origin.x + (self.ship.frame.size.width/2)
self.ship.image = #imageLiteral(resourceName: "shipleft")
print(self.ship.center.x)
}
})
animationForPlane.startAnimation()
}
private func autoshoot(_ imgShip :UIImageView, _ imgBullet :UIImageView){
var t: TimeInterval!
t = 0.2
//var hauteur = self.view.frame.maxY
if let duration = t {
UIView.animate(withDuration: duration, animations: {
imgBullet.center.y = 10
imgBullet.center.x = self.ship.center.x
}, completion: { (true) in
imgBullet.center.x = self.ship.center.x
imgBullet.center.y = imgShip.center.y
//checkPosEnemy(img, hauteur: hauteur)
self.autoshoot(imgShip, imgBullet)
})
}
}
を機能MoveTDButton
スライドのアニメーションで(左と右)ボタンで自分の船を移動することがあります:私は試してみました
コード。 そして、撮影のためのオート撮影機能^^
問題:私の船を移動するために、私はボタンをクリックすると
、位置はアニメーションの最後に設定されていない時に。 私の弾は船の位置で撮影されるのではなく、アニメーションの最後に撮影されます。
の
imgBullet.center.x = self.ship.layer.presentation()!.position
、あなたの代わりに、すべての船の位置を更新するべきではありませんプレイヤーが現在行っている敵の攻撃や地形との衝突など、他の活動を確認するためのアクションによって、そうすれば、そのポジションを使って弾丸を射撃することもできます。 –私はBen Ongに同意します。ゲームプログラミングのベストプラクティスは、フレームサイクルに従って、フレームごとにオブジェクトの位置を更新することです。 SpriteKitには、この目的のためにすでに実装されているゲームサイクルがあります。私はspriteKitに移行することをお勧めします。 –