今天我没有""
拍摄游戏
我在动画期间检查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)
})
}
}
。
并且,自动拍摄功能拍摄^^
问题:
当我点击按钮移动我的船时,位置设置在动画结束时而不是在动画期间。 所以我的子弹不是在船的位置拍摄,而是在动画结束时。
答案 0 :(得分:0)
如果您使用SpriteKit或类似的框架会更好。
但是要回答您的问题,您可以尝试:
imgBullet.center.x = self.ship.layer.presentation()!.position
代替
imgBullet.center.x = self.ship.center.x